我的搜索应用程序需要部分搜索功能。我正在使用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