在太阳黑子中进行部分搜索

时间:2014-01-27 05:56:56

标签: ruby-on-rails search autocomplete sunspot-solr

我的搜索应用程序需要部分搜索功能。我正在使用solr的太阳黑子进行搜索。如果我输入“di”或“da”,我希望我的应用搜索“Adidas”。 我还添加了EdgeNGramFilterFactory。但它仍然无法正常工作。这是我在架构中的代码:

<fieldType name="text" class="solr.TextField" omitNorms="false">
   <analyzer>
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.StandardFilterFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.PorterStemFilterFactory"/>
      <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="10" side="front" />
      <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="10" side="back" />
   </analyzer>
</fieldType>

这是我的控制器文件:

def show

    if params[:name] == ""
        @search = []
    else
        @search = Sunspot.search(Clothes) do
           fulltext params[:name]
           paginate :page => params[:page], :per_page => 24
           order_by :maxprice
        end 
        @results = @search.results
    end
    flash[:alert] = "Enter something!"
end



def autocomplete
    list=[] 
    @res = Clothes.search do
       fulltext params[:term]
       paginate :page => 1, :per_page => 100
       order_by :maxprice
    end
    @rest = @res.results
    @rest.each do |brand|
       list << {"label"=>brand.name, "value"=>brand.name, "id"=>brand.id}
    end

    respond_to do |format|
       format.json{render :json=>list.to_json, :layout=>false}
    end
end

0 个答案:

没有答案