mysql - 关于 sphinx 段规则

标签 mysql full-text-search sphinx

当我使用 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/

相关文章:

php - 从头开始构建快速语义私有(private)文章MySQL搜索引擎

python - 使用 python 搜索文本中的字符串

sql-server - SQL Server 2012 安装或添加全文搜索

mysql - Galera 集群的建议最少数量是 3 个节点吗?

mysql - 从另一个带有内部的表中计数

php - 仅使用 Sphinx 搜索引擎 (API-PHP) 进行通配符匹配和邻近度精确匹配

php - 查询失败 : connection to localhost:3306 failed in sphinx

php - Sphinx/MySQL UTF8 &™ 符号

java - 如何使用 ResultSet 对象获取实际数据类型?

php - 在 PHP 中连接 MySQL 表