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

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);

Sphinx 匹配模式的更多相关文章

  1. coreseek/sphinx中的匹配模式

    所谓匹配模式就是用户怎样依据keyword在索引库中查找相关的记录. SPH_MATCH_ALL, 匹配全部查询分词(默认模式); 如"手机配件".不匹配 "我有一部手机 ...

  2. SQL中常用模糊查询的四种匹配模式&&正则表达式

    执行数据库查询时,有完整查询和模糊查询之分.一般模糊语句如下:SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式:1.%:表示任意0个或多个字 ...

  3. Javascript中正则表达式的全局匹配模式

    先看一道JavaScript题目,据说是国内某知名互联网企业的JavaScript笔试题,如果对正则的全局匹配模式不了解的话可能会对下面的输出结果感到疑惑. var str = "123#a ...

  4. SQL模糊查询条件的四种匹配模式

    执行数据库查询时,有完整查询和模糊查询之分. 一般模糊语句格式如下: SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件 其中关于条件,SQL提供了四种匹配模式: 1.% :表示任意 ...

  5. SpringCloud系列九:SpringCloudConfig 基础配置(SpringCloudConfig 的基本概念、配置 SpringCloudConfig 服务端、抓取配置文件信息、客户端使用 SpringCloudConfig 进行配置、单仓库目录匹配、应用仓库自动选择、仓库匹配模式)

    1.概念:SpringCloudConfig 基础配置 2.具体内容 通过名词就可以发现,SpringCloudConfig 核心作用一定就在于进行配置文件的管理上.也就是说为了更好的进行所有微服务的 ...

  6. Javascript实例教程:querySelector()方法接受一个CSS查询并返回匹配模式的第一个子孙元素,如果没有匹配的元素则返回null。

    文章简介:querySelector()方法接受一个CSS查询并返回匹配模式的第一个子孙元素,如果没有匹配的元素则返回null. querySelector()方法接受一个CSS查询并返回匹配模式的第 ...

  7. Python: re.compile最短匹配模式,只取双引号内的值\“

    用正则表达式匹配某个文本模式 1.只取双引号内的值 2.长短匹配模式对比 贪婪模式:     模式r'\"(.*)\" '的意图是匹配被双引号包含的文本,但是这个表达式中*是贪婪的 ...

  8. RegExp正则匹配模式汇总

    正则表达式提供另一种强大的文本搜索和处理方式,对于正则表达式,不同语言有着不同的实现,JavaScript采用的Perl5的语法.对于极少数匹配模式是简单的全字符文本的情况,我们往往会采用indexO ...

  9. Drools学习笔记2—Conditions / LHS 匹配模式&条件元素

    Rule的LHS由条件元素(Conditional Elements—CE)和匹配模式(Patterns)组成 Patterns被用来指示出fact的字段约束 每个约束必须为true才能让RHS的ac ...

随机推荐

  1. javac是啥

    javac是java语言编程编译器.全称java compiler. javac工具读有java语言编写的类和接口的定义,并将它们编译成字节代码的class文件.

  2. 使用curl 命令模拟POST/GET请求

    https://blog.csdn.net/u012340794/article/details/71440604 curl命令是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载 ...

  3. 32位JDK和64位JDK

    32位和64位系统在计算机领域中常常提及,但是仍然很多人不知道32位和64位的区别,所以本人在网上整理了一些资料,并希望可以与大家一起分享.对于32位和64位之分,本文将分别从处理器,操作系统,JVM ...

  4. iptables配置顺序-两条规则会忽略后边的

    oracle在centos本机能够正常访问,关闭防火墙也能够远程访问,但是一旦开启防火墙则不能远程访问 尝试添加规则iptables -A INPUT -m state --state NEW -m ...

  5. java鲁棒性(健壮性)

    java能检测编译和运行时的错误 java自己操作内存减少了内存出错的可能 java实现了真数组,避免了覆盖数据的可能 Java不支持指针操作,大大减少了错误发生的可能性 ... 备注: Java能运 ...

  6. ubuntu linux 1604 编译安装tesseract-ocr 4.0

    主要参考官方的编译,梳理一下整个流程 Linux The build instructions for Linux also apply to other UNIX like operating sy ...

  7. OpenGL核心技术之Shadow Mapping

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...

  8. [POI2001]和平委员会

    题目描述 根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立. 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍. 此委员会必须满足下列条件: 每个党派都在委 ...

  9. 还在纠结注册.com域名还是.cn域名?

    一.概念 .com域名,国际最广泛流行的通用域名格式.国际化公司都会注册. .com域名:当然也可以选择.net/.org以.com为结尾的国际域名. 例如表示工商企业的 .com. 同时还有 .ne ...

  10. BFS - 广度优先搜索 - 邻接列表表示法

    2017-07-25 21:40:22 writer:pprp 在DFS的基础上加上了一个BFS函数 #include <iostream> #include <queue> ...