Sphinx 并先按 AND 然后按 OR 的组合查询排名结果
Sphinx and query for ranked results by first AND and then combinations of OR
我认为这是相当常见的情况,但就是想不通也找不到任何相关信息。
假设我有以下文本:
- 狗讨厌猫
- 我家猫吃老鼠但讨厌狗
- 老鼠讨厌猫但不关心狗
- 长颈鹿不在乎任何猫
- 狗在大多数情况下都很勇敢
我想不通查询,returns 按以下顺序发短信:
1) 首先包含所有三个 'dog'、'cat' 和 'mice'、
的所有文本
2) 然后所有包含每对 ('dog', 'cat'), ('dog', 'mice'), ('cat', 'mice') 排名不分先后
3) 然后是包含 'dog'、'cat' 或 'mice'
中任何一个的所有文本
因此,针对给定文本的此类查询结果应该是这样的(最好先是较短的文本,但不一定)
- 我家猫吃老鼠但讨厌狗
- 老鼠讨厌猫但不关心狗
- 狗讨厌猫
- 长颈鹿不在乎任何猫
- 狗在大多数情况下都很勇敢
有人可以帮我吗?
一般来说,它有两个部分,匹配和排名。
对于匹配,您只需要包含至少一个单词的文档(即接受包含其中一个单词的文档)。仲裁运算符可能是最简单的方法,但其他一些方法也可以。
... 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
我认为这是相当常见的情况,但就是想不通也找不到任何相关信息。
假设我有以下文本:
- 狗讨厌猫
- 我家猫吃老鼠但讨厌狗
- 老鼠讨厌猫但不关心狗
- 长颈鹿不在乎任何猫
- 狗在大多数情况下都很勇敢
我想不通查询,returns 按以下顺序发短信:
1) 首先包含所有三个 'dog'、'cat' 和 'mice'、
的所有文本2) 然后所有包含每对 ('dog', 'cat'), ('dog', 'mice'), ('cat', 'mice') 排名不分先后
3) 然后是包含 'dog'、'cat' 或 'mice'
中任何一个的所有文本因此,针对给定文本的此类查询结果应该是这样的(最好先是较短的文本,但不一定)
- 我家猫吃老鼠但讨厌狗
- 老鼠讨厌猫但不关心狗
- 狗讨厌猫
- 长颈鹿不在乎任何猫
- 狗在大多数情况下都很勇敢
有人可以帮我吗?
一般来说,它有两个部分,匹配和排名。
对于匹配,您只需要包含至少一个单词的文档(即接受包含其中一个单词的文档)。仲裁运算符可能是最简单的方法,但其他一些方法也可以。
... 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