【问题标题】:Sphinx search for product & version numberSphinx 搜索产品和版本号
【发布时间】:2015-02-03 21:31:40
【问题描述】:

我需要使用 Sphinx 构建一个简单的搜索引擎,用于搜索产品和版本号(它们是字符串)。例如,如果我的索引中有:

  • title = 产品名称
  • 版本 = 1.2.3

  • title = 其他产品

  • 版本 = 2.5 测试版

  • title = 又一个产品

  • 版本 = 1.2.4 alpha

所以我想要实现的是:

  • 查询“产品 1.2”应匹配产品 1 和 3(版本 1.2 应作为 1.2.3 和 1.2.4 的子字符串匹配)
  • 查询“产品”应匹配所有 3 个产品
  • 查询“beta”应与产品 2 匹配
  • 查询“1.2.4”应该只匹配第三个产品

等等。

为了实现这一点,哪些配置设置很重要?我尝试更改了很多配置变量(忽略字符、混合字符等),但没有给我想要的结果...

【问题讨论】:

    标签: php sphinx


    【解决方案1】:
    charset_table = english, U+2E
    min_prefix_len = 1
    

    然后重写查询以自动将 * 附加到末尾数字

    $query = preg_replace('/\b(\d+[\.\d]*)\b/','$1*',$query);
    

    唯一的问题是搜索1.2 仍然会匹配1.20.2。应该可以通过零填充(使用 regex_filter 在索引中填充)来解决问题,但这还有很多工作要做。

    【讨论】:

      猜你喜欢
      • 2013-12-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多