太阳黑子的“ LIKE”查询

| 我正在使用
sunspot
。如何运行
LIKE
查询(
LIKE %q%
)?我想做这样的事情:
 @search = Sunspot.search(User) do |q|
   q.text_fields { with(:company_name).like(params[:q]) }
 end.results
代替:
@search = Sunspot.search(User) do |q|
  q.text_fields { with(:company_name).starting_with(params[:q]) }
end.results
这部分地为我工作。回顾
sunspot
代码,我发现了这段代码:
class StartingWith < Base
  private

  def to_solr_conditional
    \"#{solr_value(@value)}*\"
  end
end
它基本上会生成以下黑子搜索哈希:
Sunspot.search(User) do |q| 
  q.text_fields { with(:company_name).starting_with(\"sta\")} }
end

=> Sunspot::Search:{:q=>\"*:*\", :fq=>[\"type:User\", \"company_name_text:sta*\"]} 
如果没有更简单的实现
LIKE %query%
的方法,我该如何使用生成SOLR逻辑的方法
to_solr_conditional
创建新的类
Like
?     
已邀请:
如果使用标准的DisMax处理程序,则它不支持通配符。您有2个选择: 一种。激活EdgeNGramFilter:
<fieldType name=\"text\" class=\"solr.TextField\" omitNorms=\"false\">
  <analyzer type=\"index\">
    ..
    <filter class=\"solr.EdgeNGramFilterFactory\" minGramSize=\"2\" maxGramSize=\"15\" side=\"front\"/>
    ..
  </analyzer>
</fieldType>
b。与EDismax Handler一起使用每晚构建的Solr。 请参阅有关黑子文档的Wiki文章或有关SO的类似问题。     

要回复问题请先登录注册