您的位置:首页 > 数据库 > MySQL

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

2015-03-28 08:45 260 查看
 大家都知道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个词。而且同时存在的权重高。比较符合搜索规范。

就这样吧~肯定有说的很不正确的地方。大家一起讨论哈~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql