1

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

假设我有以下文本:

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

我无法弄清楚查询,它按以下顺序返回文本:

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

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

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

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

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

有人可以帮我吗?

4

1 回答 1

0

总的来说,它有两个部分,匹配和排名。

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

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

然后你想让单词最多的(3)首先显示 - 这是关于排名 http://sphinxsearch.com/docs/current.html#ranking-overview

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

... OPTION ranker=wordcount

但是阅读上面关于排名的部分,可以进行更详细的排名。

通过排名,您需要进入思考 sphinx 如何为每个结果计算分数的思维方式,然后按权重降序对结果进行排序。(而不是'这个,然后那个,然后那个'。)


编辑添加:你提到dog是一个查询词,但有包含dogs这样的文档,请确保查看形态和词干来解释这一点。 http://sphinxsearch.com/docs/current.html#conf-morphology

于 2018-09-26T09:19:48.513 回答