最近想实现一个这样的功能,来改变一下 elasticsearch
文本搜索的匹配度。
现将字符串 “某数学兴趣小组开展了一次课外活动” 放到 elasticsearch
里去搜索,会使用 ik 分词器 ik_smart
进行分词,分词结果如下:
{
"tokens" : [
{
"token" : "某",
"start_offset" : 0,
"end_offset" : 1,
"type" : "CN_CHAR",
"position" : 0
},
{
"token" : "数学",
"start_offset" : 1,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "兴趣小组",
"start_offset" : 3,
"end_offset" : 7,
"type" : "CN_WORD",
"position" : 2
},
{
"token" : "开展",
"start_offset" : 7,
"end_offset" : 9,
"type" : "CN_WORD",
"position" : 3
},
{
"token" : "了",
"start_offset" : 9,
"end_offset" : 10,
"type" : "CN_CHAR",
"position" : 4
},
{
"token" : "一次",
"start_offset" : 10,
"end_offset" : 12,
"type" : "CN_WORD",
"position" : 5
},
{
"token" : "课外活动",
"start_offset" : 12,
"end_offset" : 16,
"type" : "CN_WORD",
"position" : 6
}
]
}
但是这样的结果并不能满足的我需求,我想将上面分词后的结果再进行重组,组成新的、有意义的短语,如:一次数学课外活动
。
请问有没有某种工具或算法能实现这样的需求?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.