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')
有没有办法只输出包含 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')