首页 > 解决方案 > Sphinx(搜索) - 匹配关键字两次(三次等)的文档

问题描述

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

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

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

标签: sphinxsphinxql

解决方案


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

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

MATCH('Pablo << Pablo')

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


您还可以使用 primoxity 运算符来简化原始查询,它只希望单词彼此靠近,这比两个短语运算符更简洁

MATCH('"Pablo Picasso"~1')

... 即彼此相距 1 个字以内 - 即形容词。


两者结合..

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

并且对于发生

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

推荐阅读