Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 获取不基于整个索引值的搜索结果_Ruby On Rails_Thinking Sphinx - Fatal编程技术网

Ruby on rails 获取不基于整个索引值的搜索结果

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.rb如下所示:

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是nil

Thinking 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,因为它引发了一个错误,说前缀和中缀不能同时启用。谢谢