我正在使用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就是
答案 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]}*")
当你不使用整个单词时它也会起作用!