狮身人面像并通过“与”然后是“或”的组合查询排名结果

时间:2018-09-26 06:17:01

标签: sphinx sphinxql

我认为这是很常见的情况,但只是无法弄清楚并找到有关它的任何信息。

说我有以下文本:

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

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

1)首先,所有包含所有三个“狗”,“猫”和“老鼠”的文本

2)然后以不特定顺序包含每对('dog','cat'),('dog','mice'),('cat','mice')的所有文本

3)然后所有包含“狗”,“猫”或“老鼠”中任何一个的文本

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

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

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

通常,它分为匹配和排名两部分。

对于匹配,您只需要包含至少一个单词的文档(即将接受其中一个单词的文档)。仲裁运算符可能是最简单的方法,但是其他一些方法也可以使用。

... MATCH(' "dog cat mice"/1 ') 

然后,您想让第三个单词最多的单词首先显示-这与排名有关 http://sphinxsearch.com/docs/current.html#ranking-overview

通常,您可能会发现WordCount Ranker适合您的情况

... OPTION ranker=wordcount

但是请阅读上面有关排名的部分,还有很多详尽的排名需要完成。

通过排名,您需要进入思维方式,思考狮身人面像如何为每个结果计算得分,然后按降序对结果进行排序。 (与“ 此,然后那个,然后那个”相对。)


编辑以添加:您提到dog是一个查询词,但是文档中包含dogs,因此请务必查看形态并加以解释。 http://sphinxsearch.com/docs/current.html#conf-morphology