`
cppmule
  • 浏览: 449267 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

sphinx检索语法与匹配模式备忘

 
阅读更多

sphinx检索语法与匹配模式备忘



Sphinx检索语法与匹配模式

 

匹配模式

SPH_MATCH_ALL,匹配所有查询词(缺省模式)

SPH_MATCH_ANY,匹配任意查询词

SPH_MATCH_PHRASE,短语匹配

SPH_MATCH_BOOLEAN,布尔表达式匹配

SPH_MATCH_EXTENDED,查询匹配一个Sphinx内部查询语言表达式

 

布尔查询语法(Boolean query syntax)

布尔查询允许使用下面特殊操作符:

AND:hello & world

OR:hello | world

NOT:hello -world或hello !world

Grouping:(hello world)

举一个使用这些操作符的例子:

( cat -dog ) | ( cat -mouse)

AND是一个隐式操作符,“hello world”就相当于“hello & world”。

OR的优先级高于AND,所以“looking for cat | dog | mouse”的意思是“looking for (cat | dog | mouse)”而不是“(looking for cat) | dog | mouse”

象“-dog”这种隐式地包含了所有查询记录,是不会被执行的。这主要是考虑到技术上与性能上的原因,从技术上来说,sphinx不能总保持所有文章的ID列表,性能上来说,当结果集巨大(10-100M),执行这样的查询将费耗较长时间。

 

扩展查询语法(Extended query syntax)

扩展查询允许合我下面特殊操作符:

操作符OR:hello | world

操作符NOT:hello -world或hello !world

字段搜索操作符:@title hello @body world

短语(phrase)搜索符:”hello world”

临近(proximity)搜索符:”hello world”~10

举例:

“hello world” @title “example program”~5 @body python -(php|perl)

AND是一个隐式操作符,”hello world”表示hello与world都要出现在匹配的记录中。

OR的优先级高于AND,所以“looking for cat | dog | mouse”的意思是“looking for (cat | dog | mouse)”而不是“(looking for cat) | dog | mouse”

临近距离在串中标明了,主要是用来调整单词数量,应用在引号中的所有查询字串。”cat dog mouse”~5表示包括这三个单词在内,总共不能多于8个单词的间隔。比如”CAT aaa bbb ccc DOG eee fff MOUSE”就不能匹配这个查询,因为单词间隔刚好是8个。

象aaa | ( bbb ccc | ( ddd eee ) )这样的括号嵌套查询目前还不支持,但以后会修正的。

否定(如NOT)只允许出现在顶层,不允许出现在括号内(如groups)。这点是不会改变的。因为支持否定嵌套查询会让短语排序(phrase ranking)的实现变得过于复杂。

 

权重(匹配度,Weight)

采用什么权重功能取决于搜索模式(Search mode)

在权重函数中,有两个主要部分:(短语排名)phrase rank和statistical rank(统计排名)

短语排名是基于搜索词在文档和查询短语中的最长公共子序列(LCS)的长度。所以如果在记录中有切确的短语匹配,记录的短语排名将有可能是最高的,等于查询单词的总个数。

统计排名是建立在经典的BM25算法基础之上,它只考虑词频。词在全部文档集合中以低的频度出现或高频度出现在匹配的文档中,那么它获得的权重就越大,最终的BM25权重是一个介于0到1之间的小数。

好的子短语匹配得到好的排名,最好的匹配放到最顶端。Sphinx作者的经验是:基于排名的密切短语比其它任何单独的统计方式表现出较好的搜索质量。

在SPH_MATCH_BOOLEAN 模式中,不需要计算权重,每条匹配记录的权重都是1

在SPH_MATCH_ALL和SPH_MATCH_PHRASE模式中,最终的权重是短语排名权重的总和

在SPH_MATCH_ANY模式中,本质上是一样的,但它也增加了每个字段的匹配单词数量,在这之前,短语排名权重乘以一个足够大的值以保证在任意一个字段的较高短语排名可以匹配排名较高者,即使它的字段权重比较低。

在SPH_MATCH_EXTENDED模式中,最终的权重是短语权重和BM25权重的总和,再乘以1000取整。

分享到:
评论

相关推荐

    sphinx 中英文分词检索介绍

    #### 四、Sphinx与Lucene的对比 1. **索引构建速度**:Sphinx在构建索引方面表现更为优秀,特别是在处理大规模数据集时,构建1000万条记录的索引所需时间远低于Lucene。 2. **API接口友好度**:Sphinx提供的API更加...

    sphinx检索工具

    1. **全文索引**:Sphinx 支持对大量文本数据进行快速的全文索引,允许用户通过关键词进行精确或模糊匹配的检索。 2. **实时更新**:Sphinx 具有实时索引能力,这意味着当数据源发生变化时,如新增、删除或修改记录...

    PHP 全文检索引擎 Sphinx 介绍

    Sphinx是一个高性能、开源的全文检索引擎,专为配合SQL数据库而设计,如MySQL和PostgreSQL,用于实现高效且专业的全文搜索功能。它的核心优势在于能够提供比数据库原生搜索更强大的搜索性能,并且易于集成到各种使用...

    Sphinx全文检索引擎 for Windows v2.0.6

    Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,...

    sphinx全文检索引擎

    sphinx全文检索引擎

    Sphinx全文检索引擎 for Windows v2.0.6.zip

    Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,...

    基于Sphinx+MySQL的千万级数据全文检索

    7. 支持多种搜索模式,如完全匹配、短语匹配和任一匹配。 8. 可作为MySQL的存储引擎,直接集成到数据库查询中。 在设计中,搜索引擎架构遵循以下原则: 1. 调用方式最简化:前端Web工程师只需执行一条SQL语句,通过...

    Sphinx基于SQL的全文检索引擎简介

    2. **高精度搜索**:Sphinx支持布尔运算符、短语匹配、模糊搜索等多种查询方式,可以实现精准的搜索结果排序。同时,它还提供了相关性排名,帮助用户找到最相关的搜索结果。 3. **实时更新**:Sphinx可以通过增量...

    Atom-language-sphinx,Atom的Sphinx语法包。贡献Siko1056/语言.zip

    7. **与其他Atom插件的兼容性**:Atom-language-sphinx可以与Atom的其他插件协同工作,如Git集成、自动格式化工具等,构建一个完整的文档编写生态系统。 为了安装和使用这个插件,你需要先确保已经安装了Atom文本...

    Sphinx-完整中文手册

    在搜索方面,Sphinx提供了多种匹配模式,包括但不限于布尔查询语法和扩展查询语法。用户可以根据实际需要设置查询的权值计算,以实现更准确的搜索结果。排序模式可以按照用户的特定需求对搜索结果进行排序。结果分组...

    sphinx全文检索

    Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,...

    java 整合 sphinx

    Java整合Sphinx主要涉及到的是在Java应用程序中使用Sphinx搜索引擎进行数据检索的技术。Sphinx是一款高性能、全文搜索引擎服务器,常用于构建实时的、基于全文的搜索功能。它提供了丰富的API和多种语言的客户端库,...

    Python-ABlog是一个Sphinx全文检索引擎的扩展

    【Python-ABlog:Sphinx全文检索引擎的扩展】 ABlog是Python开发中的一款强大工具,专门为Sphinx文档系统提供博客功能的扩展。Sphinx是一款广泛使用的文档生成器,尤其在编写技术文档时表现优秀。而ABlog则进一步...

    Sphinx全文检索引擎php版forWindowsv2.0.6

    Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,...

    Sphinx 全文检索实践指南 - 介绍.pdf

    51CTO技术沙龙第19期讲义:Sphinx 全文检索实践指南主讲:李沫南部分主要内容:全文检索 VS 数据库检索SELECT * FROM documents WHERE title like '%test%'CPU 100%'30秒内只能进行一次查询'没有找到记录......

    sphinx+php检索引擎

    #### 四、Sphinx的下载与安装 为了更好地支持中文环境,推荐使用基于Sphinx开发的Coreseek软件。Coreseek在Sphinx的基础上进行了改进,尤其是在中文支持方面表现更佳。 1. **下载安装程序**:访问官方网站...

    Sphinx快速指南

    - **匹配模式**:Sphinx支持多种匹配模式,如精确匹配、部分匹配等。 - **布尔查询语法**:允许使用AND、OR、NOT等逻辑操作符构造复杂的查询。 - **扩展查询语法**:支持短语查询、范围查询等。 - **权重**:...

    基于PHP的Sphinx全文检索引擎php版forWindows源码.zip

    1. **全文检索**:Sphinx的核心功能是全文搜索,它能快速地在大量文本数据中找到匹配的查询词,提供了布尔运算、短语匹配、模糊搜索等高级搜索特性。 2. **索引构建**:Sphinx通过建立倒排索引来加速搜索过程。索引...

    archive_ Sphinx全文检索引擎 for Linux v3.3.1 [江西新余电信].zip.zip

    5. **短语匹配**:除了单个关键词,Sphinx也支持短语匹配,可以精确找到包含特定词序的短语。 6. **排序和权重**:Sphinx可以按照相关度、时间等多种标准对搜索结果进行排序,并通过设置权重值影响结果排名。 7. *...

Global site tag (gtag.js) - Google Analytics