首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >狮身人面像( Sphinx )和查询排序结果(先通过OR组合,然后通过OR组合查询)

狮身人面像( Sphinx )和查询排序结果(先通过OR组合,然后通过OR组合查询)
EN

Stack Overflow用户
提问于 2018-09-26 06:17:00
回答 1查看 79关注 0票数 1

我认为这是相当常见的情况,但只是找不出和找到任何有关它的信息。

假设我有以下文本:

  • 狗讨厌猫
  • 我的猫吃老鼠,但讨厌狗
  • 老鼠讨厌猫,但不关心狗
  • 长颈鹿不在乎任何猫
  • 狗在大多数情况下都是勇敢的。

我找不出查询,它按以下顺序返回文本:

( 1)首先,所有包含三种“狗”、“猫”和“老鼠”的文字,

2)所有包含每对(“狗”、“猫”)、(“狗”、“老鼠”)、(“猫”、“老鼠”)的文本都没有具体的顺序。

3)所有包含“狗”、“猫”或“老鼠”的文本

因此,对给定文本的这种查询的结果应该是这样的(最好先缩短文本,但不一定)。

  • 我的猫吃老鼠,但讨厌狗
  • 老鼠讨厌猫,但不关心狗
  • 狗讨厌猫
  • 长颈鹿不在乎任何猫
  • 狗在大多数情况下都是勇敢的。

有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-26 09:19:48

一般来说,它有两个部分,匹配和排名。

对于匹配的,您只需要包含至少一个单词的文档(即接受一个带有jsut的文档)。仲裁操作符可能是最简单的方法,但其他几种方法也能工作。

代码语言:javascript
复制
... MATCH(' "dog cat mice"/1 ') 

然后,您想让大多数单词(3)首先显示出来,这是关于排名 http://sphinxsearch.com/docs/current.html#ranking-overview的。

一般情况下,您可能会发现WordCount Ranker适合您的情况。

代码语言:javascript
复制
... OPTION ranker=wordcount

但是阅读上面关于排名的一节,还有更详细的排名要做。

通过排名,你需要开始思考斯芬克斯如何为每个结果计算一个分数,然后将结果按降权顺序排序。(相对于“这个,那个,然后那个”)。)

编辑添加:您提到dog是一个查询术语,但是有包含dogs的文档,所以一定要查看词法和词干以说明这一点。http://sphinxsearch.com/docs/current.html#conf-morphology

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52511121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档