码迷,mamicode.com
首页 > 其他好文 > 详细

coreseek/sphinx中的匹配模式

时间:2014-07-06 12:25:57      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:索引   sphinx   coreseek   匹配   setmatchmode   

所谓匹配模式就是用户如何根据关键字在索引库中查找相关的记录。


SPH_MATCH_ALL, 匹配所有查询分词(默认模式);
如“手机配件”,不匹配 “我有一部手机”,但可以匹配 “手机坏了,需要找配件”。
因为“手机配件” 被分成 “手机”,“配件”两个词,匹配条件是必须同时包含这两个词,所以“我有一部手机”不符合匹配要求。




SPH_MATCH_ANY, 匹配查询词中的任意一个分词;
如“手机配件”,会匹配“我有一部手机”,因为索引库只要包含任一个分词即可被搜到,当然也能匹配“手机坏了,需要找配件”。




SPH_MATCH_PHRASE, 将整个查询看作一个词组,要求按顺序完整匹配;
这个与select * from [tab] where key like ‘%手机配件%‘相类似,如“手机配件”,不匹配 “手机坏了,需要找配件”,但可以匹配 “你这儿有手机配件吗?”。


SPH_MATCH_BOOLEAN, 将查询看作一个布尔表达式, 可以简单的与或非运算;
如( cat !dog ) | ( cat !mouse)
意思是搜索出所有匹配cat,但不匹配dog和mouse的查询分词。


SPH_MATCH_EXTENDED2,扩展匹配模式
将查询看作一个Sphinx/Coreseek内部查询语言的表达式。
在扩展查询模式中可以使用如下特殊操作符:


  • 或(OR)操作符:
hello | world


  • 非(NOT)操作符:
hello -world
hello !world


  • 字段(field)搜索符:
@title hello @body world
#title 字段中包含hello body字段中包含world


  • 字段限位修饰符
@body[50] hello
#body位数限制在50以内


  • 多字段搜索符:
@(title,body) hello world
#title 或 body字段中包含Hello world


  • 全字段搜索符:
@* hello
#只要其中一列包含hello


  • 近似搜索符:
"hello world"~10
#hello world之间最多有10个词


  • 阀值匹配符:
"the world is a wonderful place"/3
#至少匹配3个词


  • 严格有序搜索符(即“在前”搜索符):
aaa << bbb << ccc
#aaa,bbb,ccc必须按先后顺序出现

  • 字段开始和字段结束修饰符

^hello  ...  world$
#限定必须以hello开头,以world结尾




如:"hello world" @title "example program"~10 @body python -(php|perl) @* code
要求同时匹配:
在文档的任意字段中找相邻的“hello”和“world”
文档的title字段中还必须包含 “example”和“program”这两个词,并且他们之间至多有10个(不包括10个)其他的词
同时,body字段必须含有词“python”,但既没有“php”也没有“perl”
任一字段中包含”code“




SPH_MATCH_EXTENDED, 同SPH_MATCH_EXTENDED2, 为了兼容旧版本;




SPH_MATCH_FULLSCAN, 强制使用下文所述的“完整扫描”模式来对查询进行匹配;

注意,在此模式下,所有的查询词都被忽略,尽管过滤器、过滤器范围以及分组仍然起作用,但任何文本匹配都不会发生.

这里不做文本匹配,即使你传递查询词也将被忽略,一般作为过滤来用,比如说,我在餐厅索引中搜索北京的所有餐厅,我只要将北京地名的id用SetFilter方法来过滤即可。






PHP中通过setMatchMode函数来设置,如:
<?php
$sc = new SphinxClient();
$sc->setMatchMode(SPH_MATCH_ANY);

coreseek/sphinx中的匹配模式,布布扣,bubuko.com

coreseek/sphinx中的匹配模式

标签:索引   sphinx   coreseek   匹配   setmatchmode   

原文地址:http://blog.csdn.net/redleaf1995/article/details/36902595

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!