当我使用sphinx时,我发现结果不太准确。
例如,在我的mysql表中,有'test1','test2','test.zip','test_zip','test-zip'的记录 当我搜索'test'时,只有'test.zip'和'test-zip'。如果我想在结果中得到'test1',我必须明确搜索'test1'
所以我的问题是,为什么sphinx不会将test1视为'test'和'1',如果我想要搜索结果包括完整单词的部分,那该怎么做?
答案 0 :(得分:0)
默认的charset_table,将字母,数字和下划线设置为单词charactors,其他所有内容都是分隔符。
因此test1
将被编入索引为“test1”,但test-zip
将被编入索引为“test zip”
有中缀/前缀索引 http://sphinxsearch.com/docs/current.html#conf-min-infix-len 所以可以匹配部分单词。 (默认情况下,sphinx总是匹配整个单词)
如果你想要你可以更改charset_table,那么数字不会被视为单词特征(但不能搜索数字!) - 同时可能不想包括下划线 - 所以taht test_zip
可以被认为是两个字。
您可以将数字放在blend_chars中 - 这样它们也可以作为分隔符。
最后可以使用regexp_filter将单词和数字拆分成单独的单词。
......所以有四种可能的解决方案,可能值得尝试每种解决方案,并确定哪种解决方案最适合您。