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_ANY,但使用它之后,任何关键词中的字都可能做为一个单独的词进行搜索。这样语义不合适。而且这种匹配模式对词频也很有权重,个人感觉得出来的搜索结果不是很准确。
今天介绍的是SPH_MATCH_EXTENDED2,使用过的朋友可能觉得它也要搜索的关键词同时存在才会被搜索出来。是因为SPHINX默认不是通过空格分词的。而是通过""来分。比如两个关键词:我们 他是。如果单这样写
$sphinx->query('我们 他是',index);使用any模式会折成 我 们 他 是 。似乎是一元分词法。而使用extended2则要搜索的字段同时存在这2个词才可以被搜索到。如果写成 $sphinx->query('"我们"|"他是"',index);那么他就会分成我们和他是2个词。而且同时存在的权重高。比较符合搜索规范。
就这样吧~肯定有说的很不正确的地方。大家一起讨论哈~
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个词。而且同时存在的权重高。比较符合搜索规范。
就这样吧~肯定有说的很不正确的地方。大家一起讨论哈~
相关文章推荐
- PHP基于Sphinx+Swcs中文分词的全文的检索
- PHP如何进行中文分词?
- oracle Text 全文检索功能对中文分词的支持情况
- 全文检索、数据挖掘、推荐引擎系列3---全文内容推荐引擎之中文分词
- Rails程序员Sphinx中文全文检索安装指南
- 全文检索、数据挖掘、推荐引擎系列3---全文内容推荐引擎之中文分词
- 中文全文信息检索系统中索引项技术及分词系统的实现
- PostgreSQL的全文检索中文分词(2)-NlpBamboo
- lucene是个全文检索工具 IKAnalyzer是个分词包 可以用来做中文的检索
- sphinx系列之中文分词LibMMSeg安装(三)
- sphinx应用,中文分词核心配置!
- 全文检索4(关于中文分词ICTCLAS分词系统)
- 基于Sphinx的中文全文检索引擎Coreseek的安装
- sphinx中文分词mmseg的一个bug
- 【转】Sphinx在windows下安装使用[支持中文全文检索]
- 全文检索核心:几款免费中文分词模块介绍
- 免费开源的全文索引与检索平台(FirteX)、中文分词系统(ICTCLAS)
- 基于Sphinx的中文全文检索引擎Coreseek的安装
- 全文检索、数据挖掘、推荐引擎系列3---全文内容推荐引擎之中文分词
- 全文检索、数据挖掘、推荐引擎系列3---全文内容推荐引擎之中文分词