0

我正在使用 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  

到目前为止,一切都按预期工作,当我输入“圣经”时,它会返回名为“圣经”的书。但是是否有可能获得不基于例如整个标题的搜索结果?用更简单的话来说,每当我搜索“围兜”或“b”时,我都想得到“圣经”。

编辑

我的thinking_sphinx.yml 现在是:

development:
  enable_star: true
  min_infix_len: 1
  min_prefix_len: 1

和控制器动作:

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

但它仍然可以正常工作,只是没有任何查询,在加载页面后,@books 为 nil

4

2 回答 2

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"
于 2013-10-10T11:39:52.187 回答
0

Thinking Sphinx 允许您使用通配符,因此当您像这样搜索时:

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

当您不使用整个单词时,它也将起作用!

于 2013-10-10T11:37:37.757 回答