0

我在 db 中有这样的数据(当然是“轻”版本):

id | description
1  | 5W40
2  | 5W-40

我尝试使用这样的思维狮身人面像宝石搜索查询:

fields << "(@description #{params[:oiloiliness]} | #{params[:oiloiliness].gsub(/[^0-9A-Za-z]/, '')} )" 

参数 [:oiloiliness] = "5W-40"

但由于某些原因,结果我只看到第二行......我做错了什么?

如何使用 or 运算符使用 sphinx 进行搜索并在结果中看到两行?

4

1 回答 1

1

老实说,我不完全确定为什么会发生这种情况——不过这是一个 Sphinx 问题,而不是 Thinking Sphinx(所以我添加了 Sphinx 标签)。一种解决方法是将两个搜索选项都用双引号括起来:

fields << %q{(@description "#{params[:oiloiliness]}" | "#{params[:oiloiliness].gsub(/[^0-9A-Za-z]/, '')}" )}

另外:您可能需要考虑通过config/thinking_sphinx.yml将连字符添加到您的ignore_chars列表中。

于 2013-07-29T00:08:01.773 回答