获取的搜索结果不是基于整个索引值

时间:2013-10-10 11:27:44

标签: ruby-on-rails thinking-sphinx

我正在使用ThinkingSphinx进行简单搜索,该搜索通过Book模型。我的book_indexes.rb看起来像这样:

ThinkingSphinx::Index.define :book, with: :active_record do
  indexes title
  indexes author
  indexes publishing_date
  indexes isbn
end  

和控制器操作看起来像这样

  def index
    @books = Book.search(params[:search])
  end  

到目前为止,一切都按照预期运作,当我输入“圣经”时,它会返回标题为“圣经”的书。但是有可能获得不是基于整个标题的搜索结果吗?换句话说,每当我搜索“bib”或“b”时,我都希望得到“圣经”。

修改

我的thinking_sphinx.yml现在是:

development:
  enable_star: true
  min_infix_len: 1
  min_prefix_len: 1

和控制器操作:

@books = Book.search("*#{params[:search]}*")

但它仍然可以正常工作,只是在没有任何查询的情况下,只需在加载页面后,@ books就是

2 个答案:

答案 0 :(得分:1)

您正在寻找min_infix_len财产。您可以像这样设置thinking_sphinx.yml配置设置:

development:
  #.... truncated ....
  enable_star: true # Allow wildcard searching 
  min_infix_len: 3  # Indexes on values starting at 3 letters like "bib"

答案 1 :(得分:0)

思考Sphinx允许你使用通配符,所以当你这样搜索时:

@books = Book.search("*#{params[:search]}*")

当你不使用整个单词时它也会起作用!