可使用如下模式对搜索结果排序
2014-04-30 23:52
246 查看
排序模式
可使用如下模式对搜索结果排序:
SPH_SORT_RELEVANCE 模式, 按相关度降序排列(最好的匹配排在最前面)
SPH_SORT_ATTR_DESC 模式, 按属性降序排列 (属性值越大的越是排在前面)
SPH_SORT_ATTR_ASC 模式, 按属性升序排列(属性值越小的越是排在前面)
SPH_SORT_TIME_SEGMENTS 模式, 先按时间段(最近一小时/天/周/月)降序,再按相关度降序
SPH_SORT_EXTENDED 模式, 按一种类似SQL的方式将列组合起来,升序或降序排列。
SPH_SORT_EXPR 模式,按某个算术表达式排序
view sourceprint?01.//使用属性排序
02.
03.//以fromid倒序排序,注意当再次使用SetSortMode会覆盖上一个排序
04.
05.$sphinx->SetSortMode ( "SPH_SORT_ATTR_DESC", 'fromid');
06.
07.//如果要使用多个字段排序可使用SPH_SORT_EXTENDED模式
08.
09.//@id是sphinx内置关键字,这里指emailid,至于为什么是emailid,自己思考一下
10.
11.$sphinx->SetSortMode ( "SPH_SORT_ATTR_DESC", 'fromid ASC, toid DESC, @id DESC');
12.labjz.howbk.com
13.//执行搜索
14.
15.$result = $sphinx->query('关键字', '*');
//更多请查看官方文档排序模式的说明
匹配模式
有如下可选的匹配模式:
SPH_MATCH_ALL, 匹配所有查询词(默认模式);
SPH_MATCH_ANY, 匹配查询词中的任意一个;
SPH_MATCH_PHRASE, 将整个查询看作一个词组,要求按顺序完整匹配;
SPH_MATCH_BOOLEAN, 将查询看作一个布尔表达式
SPH_MATCH_EXTENDED, 将查询看作一个CoreSeek/Sphinx内部查询语言的表达式 . 从版本Coreseek 3/Sphinx 0.9.9开始, 这个选项被选项SPH_MATCH_EXTENDED2代替,它提供了更多功能和更佳的性能。保留这个选项是为了与遗留的旧代码兼容——这样即使Sphinx及其组件包括API升级的时候,旧的应用程序代码还能够继续工作。
SPH_MATCH_EXTENDED2, 使用第二版的“扩展匹配模式”对查询进行匹配.
SPH_MATCH_FULLSCAN, 强制使用下文所述的“完整扫描”模式来对查询进行匹配。注意,在此模式下,所有的查询词都被忽略,尽管过滤器、过滤器范围以及分组仍然起作用,但任何文本匹配都不会发生.
我们要关注的主要是SPH_MATCH_EXTENDED2扩展匹配模式,扩展匹配模式允许使用一些像mysql的条件语句
可使用如下模式对搜索结果排序:
SPH_SORT_RELEVANCE 模式, 按相关度降序排列(最好的匹配排在最前面)
SPH_SORT_ATTR_DESC 模式, 按属性降序排列 (属性值越大的越是排在前面)
SPH_SORT_ATTR_ASC 模式, 按属性升序排列(属性值越小的越是排在前面)
SPH_SORT_TIME_SEGMENTS 模式, 先按时间段(最近一小时/天/周/月)降序,再按相关度降序
SPH_SORT_EXTENDED 模式, 按一种类似SQL的方式将列组合起来,升序或降序排列。
SPH_SORT_EXPR 模式,按某个算术表达式排序
view sourceprint?01.//使用属性排序
02.
03.//以fromid倒序排序,注意当再次使用SetSortMode会覆盖上一个排序
04.
05.$sphinx->SetSortMode ( "SPH_SORT_ATTR_DESC", 'fromid');
06.
07.//如果要使用多个字段排序可使用SPH_SORT_EXTENDED模式
08.
09.//@id是sphinx内置关键字,这里指emailid,至于为什么是emailid,自己思考一下
10.
11.$sphinx->SetSortMode ( "SPH_SORT_ATTR_DESC", 'fromid ASC, toid DESC, @id DESC');
12.labjz.howbk.com
13.//执行搜索
14.
15.$result = $sphinx->query('关键字', '*');
//更多请查看官方文档排序模式的说明
匹配模式
有如下可选的匹配模式:
SPH_MATCH_ALL, 匹配所有查询词(默认模式);
SPH_MATCH_ANY, 匹配查询词中的任意一个;
SPH_MATCH_PHRASE, 将整个查询看作一个词组,要求按顺序完整匹配;
SPH_MATCH_BOOLEAN, 将查询看作一个布尔表达式
SPH_MATCH_EXTENDED, 将查询看作一个CoreSeek/Sphinx内部查询语言的表达式 . 从版本Coreseek 3/Sphinx 0.9.9开始, 这个选项被选项SPH_MATCH_EXTENDED2代替,它提供了更多功能和更佳的性能。保留这个选项是为了与遗留的旧代码兼容——这样即使Sphinx及其组件包括API升级的时候,旧的应用程序代码还能够继续工作。
SPH_MATCH_EXTENDED2, 使用第二版的“扩展匹配模式”对查询进行匹配.
SPH_MATCH_FULLSCAN, 强制使用下文所述的“完整扫描”模式来对查询进行匹配。注意,在此模式下,所有的查询词都被忽略,尽管过滤器、过滤器范围以及分组仍然起作用,但任何文本匹配都不会发生.
我们要关注的主要是SPH_MATCH_EXTENDED2扩展匹配模式,扩展匹配模式允许使用一些像mysql的条件语句
相关文章推荐
- 使用lucene对搜索结果排序
- Yii 在GridView中使用关联模型进行搜索和排序
- 搜索pl/sql破解版的时候baidu,google,soso使用的不同结果
- 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
- 使用策略模式(strategy pattern)实现多关键字排序(3)
- 使用W3C DOM方法和JavaScript动态创建搜索结果
- 排列搜索 庞果网(C语言版,虽实现了,但未通过测试,时间超过3s,使用的是全排序方法,愿大神指导)
- 谷歌怎样给搜索结果排序?
- 搜索结果按匹配字段进行排序
- Java使用分治算法实现排序数索引功能示例【二分搜索】
- 使用List保存搜索结果,数据重复
- Spring data elasticsearch注解@Filed和@ManytoMany同时使用,搜索结果取到属性为null
- 使用索引来排序查询结果
- 搜索学习入门--使用LuceneHighlighter高亮显示Lucene检索结果的关键词
- 使用 Apache Solr 实现更加灵巧的搜索,第 1 部分: 基本特性和 Solr 模式
- 使用Java的Lucene搜索工具对检索结果进行分组和分页
- 【腾讯云搜分享】如何通过干预搜索结果排序,实现产品运营的策略和目的
- 分别使用Python和Java抓取百度搜索结果
- SharePoint 2010开发实例精选——可排序的搜索核心结果
- DEDE5.6织梦5.7搜索结果按点击排序-最新原创可用代码