Sphinx(Search) - 匹配关键字两次(三次等)的文档

Sphinx(Search) - documents which matches keyword twice (thrice, etc.)

有没有办法只输出包含 n 个搜索词匹配项的文档?

F.e。我想输出包含搜索词 "Pablo Picasso" | "Picasso Pablo" 的所有文档至少两次(三,n)次。 这样的查询会是什么样子?

我当前的查询是: SELECT * FROM myIndex WHERE MATCH('"Pablo Picasso" | "Picasso Pablo"');

你可以通过权重过滤来做到这一点(即多次使用它的结果排名更高)

但一个有用的技巧是严格顺序运算符...

MATCH('Pablo << Pablo')

需要这个词两次(即一个在另一个之前!)


你也可以使用primoxity运算符来简化你的原始查询,它只需要彼此靠近的词,这比两个短语运算符更简洁

MATCH('"Pablo Picasso"~1')

... 即在彼此的 1 个词之内 - 即邻接词。


将两者结合..

MATCH('"Pablo Picasso"~1 << "Pablo Picasso"~1')

并且出现了 3 次

MATCH('"Pablo Picasso"~1 << "Pablo Picasso"~1 << "Pablo Picasso"~1')