博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
coreseek/sphinx多条件字段查询
阅读量:6071 次
发布时间:2019-06-20

本文共 1478 字,大约阅读时间需要 4 分钟。

hot3.png

问题:在购物或者是视频网站中,经常会看到聚类搜索,什么按照城市、类别、用途、爱好之类,这种可以是多选解决方案:1.mysql的where查询, 缺点:对于分裂的库表无能为力2.sphinxsphinx可以实现多字段查询,而且还可以通过属性进行排序、过滤等操作。(请注意,索引是不可以全文搜索的,因而要做全文搜索的字段一定不能作为索引)具体可见coreseek/sphinx文档:3.2. 属性属性是附加在每个文档上的额外的信息(值),可以在搜索的时候用于过滤和排序。搜索结果通常不仅仅是进行文档的匹配和相关度的排序,经常还需要根据其他与文档相关联的值,对结果进行额外的处理。例如,用户可能需要对新闻检索结果依次按日期和相关度排序,检索特定价格范围内的产品,检索某些特定用户的blog日志,或者将检索结果按月分组。为了高效地完成上述工作,Sphinx允许给文档附加一些额外的属性,并把这些值存储在全文索引中,以便在对全文匹配结果进行过滤、排序或分组时使用。属性与字段不同,不会被全文索引。他们仅仅是被存储在索引中,属性进行全文检索式不可能的。如果要对属性进行全文检索,系统将会返回一个错误。例如,如果column被设置为属性,就不能使用扩展表达式@column 1去匹配column为1的文档;如果数字字段按照普通的方式被索引,那么就可以这样来匹配。属性可用于过滤,或者限制返回的数据,以及排序或者 结果分组; 也有可能是完全基于属性排序的结果, 而没有任何搜索相关功能的参与. 此外, 属性直接从搜索服务程序返回信息, 而被索引的文本内容则没有返回.论坛帖子表是一个很好的例子。假设只有帖子的标题和内容这两个字段需要全文检索,但是有时检索结果需要被限制在某个特定的作者的帖子或者属于某个子论坛的帖子中(也就是说,只检索在SQL表的author_id和forum_id这两个列上有特定值的那些行),或者需要按post_date列对匹配的结果排序,或者根据post_date列对帖子按月份分组,并对每组中的帖子计数。为实现这些功能,可以将上述各列(除了标题和内容列)作为属性做索引,之后即可使用API调用来设置过滤、排序和分组。以下是一个例子:示例: sphinx.conf 片段:...sql_query = SELECT id, title, content, \        author_id, forum_id, post_date FROM my_forum_postssql_attr_uint = author_idsql_attr_uint = forum_idsql_attr_timestamp = post_date...示例: 应用程序代码 (PHP):// only search posts by author whose ID is 123$cl->SetFilter ( "author_id", array ( 123 ) );// only search posts in sub-forums 1, 3 and 7$cl->SetFilter ( "forum_id", array ( 1,3,7 ) );// sort found posts by posting date in descending order$cl->SetSortMode ( SPH_SORT_ATTR_DESC, "post_date" );

转载于:https://my.oschina.net/yonghan/blog/550401

你可能感兴趣的文章
阿里云企业邮(免费版)
查看>>
Centos7更换Yum源
查看>>
寻找总和为n的连续子数列之算法分析
查看>>
「镁客·请讲」钢铁侠张锐:外形仿人只是次要,拥有会自主决策的“运动脑”才是真的机器人...
查看>>
CentOS 6.5 apache源码安装2.0版
查看>>
Linux下快速静态编译Qt以及Qt动态/静态版本共存
查看>>
oracle11g学习笔记
查看>>
redhat 7.2更新yum源时踩的坑
查看>>
shell/bash 交集、并集、差集
查看>>
制造企业不要低估机器视觉社区数据的重要性
查看>>
Datastore Mount/Unmount Detach/Attach functions
查看>>
win2008 下实现exchange2007 ccr群集
查看>>
网络中个体的力量
查看>>
php读取文本去除空格
查看>>
数据结构简单介绍
查看>>
Python-函数
查看>>
11.python并发入门(part13 了解事件驱动模型))
查看>>
每天学一点Scala之type
查看>>
Android消息循环机制
查看>>
Esxi CPU/Memory Ratio
查看>>