1

当我使用 sphinx 时,我发现结果不太准确。

例如,在我的mysql表中,有'test1','test2','test.zip','test_zip','test-zip'的记录当我搜索'test'时,只得到'test.zip'和'test-zip'。如果我想在结果中得到“test1”,我必须明确搜索“test1”

所以我的问题是,为什么 sphinx 不将 test1 视为“测试”和“1”,如果我想要搜索结果包括完整单词的一部分,该怎么做?

4

1 回答 1

0

默认的 charset_table,将字母、数字和下划线设置为单词字符,其他都是分隔符。

所以test1会被索引为“test1”,但test-zip会被索引为“test zip”

有中缀/前缀索引 http://sphinxsearch.com/docs/current.html#conf-min-infix-len 所以可以匹配部分词。(默认情况下,sphinx 总是匹配整个单词)

如果您愿意,您可以更改 charset_table,因此数字不被视为单词字符(但随后将无法搜索数字!) - 同时可能不希望包含下划线 - 所以 tahttest_zip可以被视为两个单词。

您可以改为将数字放入 blend_chars - 以便它们也被视为分隔符。

最后可以使用 regexp_filter 将单词和数字拆分为单独的单词。

......所以四种可能的解决方案,可能值得尝试每一种,并确定哪种最适合您。

于 2013-08-27T16:11:22.203 回答