【问题标题】:Need help to get exact match result using quotes search in sphinx需要帮助以使用 sphinx 中的引号搜索获得完全匹配的结果
【发布时间】:2013-09-30 09:31:49
【问题描述】:

我需要您的帮助来解决 Thinking Sphinx 中的问题。
我正在使用“sphinx-2.0.5-win32”和以下宝石
gem 'thinking-sphinx', '2.0.13' 和 gem 'riddle', '1.5.3'

sphinx.yml 包含
开发:
min_infix_len: 3
charset_table: "0..9, A..Z->a..z, _, a..z, -, U+410..U+42F->U+430..U+44F, U+430 ..U+44F, ., %, @, #, &, *, $"
binlog_path: '#'

我的模型文件:
班级房间
定义索引做
set_property :delta => true
索引 :code, :as => :rm_code, :sortable => true
有身份证
结束
结束


我是这样搜索的:
rm.search Riddle.escape('"rm0001"'), :page => params[:page], :per_page => 25, :match_mode => :extended -----------> 得到 2结果

代码

rm0001
rm0001N


我只想在搜索结果中显示“rm0001”,
请帮帮我

提前致谢。
普拉文

【问题讨论】:

  • 如果不转义搜索查询会发生什么?我很确定引号会被转义,这不是您想要的。
  • 我试过这样,Rm.search '"rm0001"', :match_mode => :extended,但仍然得到 2 个结果。我想我应该用 ':min_infix_len => 定义多个索引0' 并使用它。
  • 哦,是的,肯定是 min_infix_len 会导致问题。我猜第二个索引设置为零,然后只搜索那个索引就可以了。

标签: sphinx thinking-sphinx


【解决方案1】:

您已设置 min_infix_len - 启用部分单词匹配。

但没有设置 enable_star=true,这意味着查询自动是部分词。

所以要么删除 min_infix_len 以禁用部分单词匹配,要么设置 enable_star 以便部分单词匹配仅在包含 * 时发生在单词的星号/结尾。

【讨论】:

  • 非常感谢,它成功了。我遇到了另一个问题,如果我这样搜索,Rm.search Riddle.escape('1-2-3'), :match_mode => :extended, :star => true,然后 sphinx 搜索*1*-*2*-*3*,这将给出零结果。如果我用 :star => false 搜索,它会给出正确的结果。注意:'-' 已编入索引
  • * 仅用于单词的开头/结尾。因为你有 - 索引,它是一个词的一部分,所以很多星星都在中间。如果没有启用星形语法,您实际上是在寻找 '1-2-3' 中间的星形不包括在内。
  • 但是 - 索引在这里,所以如果我使用 :star => true,sphinx 应该搜索 *1-2-3* 而不是 *1*-*2*-*3*..对吗?
猜你喜欢
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多