Sphinx与列字符串完全匹配
我以为Sphinx与列字符串完全匹配,sphinx,Sphinx,我以为 Match('^Word$') 只能找到与“Word”完全相同的记录 但是,尽管这对单个单词有效,但对多个单词无效: Match ('^Final Word$') 查找“最后一个字”和“最后一个字” 同样 Match ('^"Final Word"$') 我如何告诉斯芬克斯只找到一个精确的匹配 更新:经过一些测试后,我能做的最好的事情是加权/分级和w/o“” 因此,我强制使用排名和限制进行精确匹配,但如果知道如何实际说“只返回精确匹配”,那就太好了 上面的一个问题是,如果我在表中
Match('^Word$')
只能找到与“Word”完全相同的记录
但是,尽管这对单个单词有效,但对多个单词无效:
Match ('^Final Word$')
查找“最后一个字”和“最后一个字”
同样
Match ('^"Final Word"$')
我如何告诉斯芬克斯只找到一个精确的匹配
更新:经过一些测试后,我能做的最好的事情是加权/分级和w/o“” 因此,我强制使用排名和限制进行精确匹配,但如果知道如何实际说“只返回精确匹配”,那就太好了
上面的一个问题是,如果我在表中没有“最后一句话”,它会找到所有其他的词,例如“最后一句话”,这是我不想要的行为。您刚才的运算符顺序错误:)
(在$后面留一个空格有助于解决一些神秘的斯芬克斯bug!)所以问题是,在我努力完成这项工作的过程中,一个步骤是指定ranker
Option Ranker=proximition\u BM25
到那时为止,这对我很有效。真正起作用的是
匹配(“^Final Word$”)
然后不指定ranker或指定
extended
,如果配置中的ranker是另外定义的(默认情况下它是extended
)这样,无论出于何种原因匹配,都会返回零结果。sphinx的哪个版本?尝试在$后面加一个空格,在某些版本中出现了一个bug,这会神秘地不起作用!我试着在上面的回复中写下这一点,但没有成功@BarrHunter我想你不想问这个问题吗?:我的版本是斯芬克斯2.2.11-id64-release(95ae9a6)的“^Final Word$”
肯定会失败,“^Final Word$”
我对字符集的了解可能比你少。
MATCH('^Final Word$') order by weight() desc limit 1 desc OPTION ranker=PROXIMITY_BM25
Match('"^Final Word$ "')