Ruby on rails 获取不基于整个索引值的搜索结果
我正在使用ThinkingSphinx进行一个简单的搜索,通过图书模型进行搜索。我的书_index.rb如下所示:Ruby on rails 获取不基于整个索引值的搜索结果,ruby-on-rails,thinking-sphinx,Ruby On Rails,Thinking Sphinx,我正在使用ThinkingSphinx进行一个简单的搜索,通过图书模型进行搜索。我的书_index.rb如下所示: ThinkingSphinx::Index.define :book, with: :active_record do indexes title indexes author indexes publishing_date indexes isbn end development: #.... truncated .... enable_star:
ThinkingSphinx::Index.define :book, with: :active_record do
indexes title
indexes author
indexes publishing_date
indexes isbn
end
development:
#.... truncated ....
enable_star: true # Allow wildcard searching
min_infix_len: 3 # Indexes on values starting at 3 letters like "bib"
控制器动作如下所示
def index
@books = Book.search(params[:search])
end
到目前为止,一切都按预期进行,当我输入“bible”时,它返回名为“bible”的书。但是有没有可能得到不以整个标题为基础的搜索结果呢?更简单地说,每当我搜索“bib”或“b”时,我都想得到“bible”
编辑
我现在的想法是:
development:
enable_star: true
min_infix_len: 1
min_prefix_len: 1
和控制器动作:
@books = Book.search("*#{params[:search]}*")
但是它仍然是一样的,只是没有任何查询,在加载页面之后,@books是nilThinking Sphinx允许您使用通配符,因此当您像这样搜索时:
@books = Book.search("*#{params[:search]}*")
当你不使用整个单词时,它也会起作用 你在找房子。您可以如下设置thinking_sphinx.yml
配置设置:
ThinkingSphinx::Index.define :book, with: :active_record do
indexes title
indexes author
indexes publishing_date
indexes isbn
end
development:
#.... truncated ....
enable_star: true # Allow wildcard searching
min_infix_len: 3 # Indexes on values starting at 3 letters like "bib"
您需要配置enable_star和min_prefix_len才能工作,但这并不难做到。这两种设置都在文档的这一页中提到:您已经运行了
rake ts:index
或rake ts:rebuild
?不,稍后再试是的,这是我需要做的,我还从thinking_sphinx.yml中删除了minu infix_len:1,因为它引发了一个错误,说前缀和中缀不能同时启用。谢谢