当我使用 sphinx 时,我发现结果不太准确。
比如我的mysql表中,有'test1', 'test2', 'test.zip', 'test_zip', 'test-zip'的记录 当我搜索“test”时,只有“test.zip”和“test-zip”。如果我想得到 'test1' 结果,我必须明确搜索 'test1'
所以我的问题是,为什么 sphinx 不将 test1 视为“test”和“1”,如果我希望搜索结果包括完整单词的一部分,该怎么做?
最佳答案
默认的charset_table,设置字母、数字和下划线为单词字符,其他都是分隔符。
因此 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 将单词和数字拆分为单独的单词。
...所以有四种可能的解决方案,可能值得尝试每一种,然后决定哪种最适合您。
关于mysql - 关于 sphinx 段规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18442217/