更好的思考狮身人面像结果

时间:2013-05-03 11:51:04

标签: ruby-on-rails ruby sphinx thinking-sphinx

我最近开始玩思维sphinx gem并且在运行搜索方面取得了巨大成功,但是我注意到由于某种原因,某些搜索没有返回正确的记录。

配置/ thinking_sphinx.yml

development:
  mysql41: 3313
  morphology: stem_en

indicies / product_index.rb

indexes :title

LIB /任务/ my_rake_task.rake

term = "Garmin Edge 500 GPS Enabled Computer"
@product = Product.search Riddle::Query.escape(term), ranker: :none 

rake任务应与'Garmin Edge 500 GPS Cycle Computer'数据库中的标题匹配,但由于某种原因,它返回一个空数组。当我删除“启用”一词时,它会返回记录。

我只是想知道是否有一种简单的方法来提高搜索的准确性?

1 个答案:

答案 0 :(得分:0)

嗨保罗(刚刚回复了TS列表,但这里是我的回复,附带示例):

你想要做什么(匹配一些但不一定是所有的词)有点棘手,但这里有几点需要注意:

如果你想匹配任何字,而不是全部,你可以在每个字之间插入|(|是Sphinx的OR)。还有仲裁运算符,但这可能更难,因为您无法控制用户可以输入的条件数。 http://sphinxsearch.com/docs/current.html#extended-syntax

# Using ORs
Product.search "Garmin | Edge | 500 | GPS | Enabled | Computer"
# Using quorum
Product.search '"Garmin Edge 500 GPS Enabled Computer"/4'

无论哪种方式,你都会将用户提供的查询切换为计算或拆分单词,这有点令人讨厌,但也许值得。

希望这有帮助。