sphinx中文分词检索 如何让分词的精确度更高

 我来答
蘑菇饭资讯
推荐于2016-08-04 · TA获得超过6万个赞
知道大有可为答主
回答量:1.7万
采纳率:90%
帮助的人:1.2亿
展开全部
大家都知道sphinx自带的一些匹配模式。主要有
setMatchMode:
SPH_MATCH_ALL匹配所有查询词(默认模式)
SPH_MATCH_ANY匹配查询词中的任意一个
SPH_MATCH_PHRASE将整个查询看作一个词组,要求按顺序完整匹配
SPH_MATCH_BOOLEAN将查询看作一个布尔表达式
SPH_MATCH_EXTENDED将查询看作一个Sphinx内部查询语言的表达式
SPH_MATCH_FULLSCAN使用完全扫描,忽略查询词汇
SPH_MATCH_EXTENDED2类似 SPH_MATCH_EXTENDED ,并支持评分和权重.

通常我们想搜索到尽可能多的一句话中的内容,使用的是SPH_MATCH_ANY,但使用它之后,任何关键词中的字都可能做为一个单独的词进行搜索。这样语义不合适。而且这种匹配模式对词频也很有权重,个人感觉得出来的搜索结果不是很准确。
今天介绍的是SPH_MATCH_EXTENDED2,使用过的朋友可能觉得它也要搜索的关键词同时存在才会被搜索出来。是因为SPHINX默认不是通过空格分词的。而是通过""来分。比如两个关键词:我们 他是。如果单这样写
$sphinx->query('我们 他是',index);使用any模式会折成 我 们 他 是 。似乎是一元分词法。而使用extended2则要搜索的字段同时存在这2个词才可以被搜索到。如果写成 $sphinx->query('"我们"|"他是"',index);那么他就会分成我们和他是2个词。而且同时存在的权重高。比较符合搜索规范。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式