【问题标题】:About sphinx segment rules关于 sphinx 分段规则
【发布时间】:2013-08-26 10:43:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: mysql full-text-search sphinx


    【解决方案1】:

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

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

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

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

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

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

    ... 有四种可能的解决方案,可能值得一试,然后决定哪种方案最适合您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 2014-10-13
      • 2020-03-25
      • 2021-04-17
      • 1970-01-01
      • 2011-03-16
      相关资源
      最近更新 更多