模糊的;以“开始”;用Solr和Sunspot搜索多个单词
我试图提供一个文本搜索,根据城市的名称和所在国家的名称来查找城市 例如,我想返回意大利米兰模糊的;以“开始”;用Solr和Sunspot搜索多个单词,solr,ruby-on-rails-3.2,sunspot-solr,Solr,Ruby On Rails 3.2,Sunspot Solr,我试图提供一个文本搜索,根据城市的名称和所在国家的名称来查找城市 例如,我想返回意大利米兰mil ita搜索,或者返回美国洛杉矶losang uni搜索 这些是我目前拥有的模型(验证省略): 我正在控制器中执行搜索,其中包含: search = City.search do fulltext params[:q] paginate page: 1, per_page: 10 end 这里发生的事情是,如果我搜索mil,我将得到Milan,Italy,但是搜索mil-ita将不会返回任何
mil ita
搜索,或者返回美国洛杉矶losang uni
搜索
这些是我目前拥有的模型(验证省略):
我正在控制器中执行搜索,其中包含:
search = City.search do
fulltext params[:q]
paginate page: 1, per_page: 10
end
这里发生的事情是,如果我搜索mil
,我将得到Milan,Italy
,但是搜索mil-ita
将不会返回任何结果
有什么想法吗
提前谢谢大家,
r、 找到了一个解决方案,我想与大家分享 您只需构建一个“自定义字段”,其中包含要启用搜索的所有文本,如下所示(在城市模型中): 这很有效 r
class Country < ActiveRecord::Base
end
<fieldtype class="solr.TextField" positionIncrementGap="100" name="text">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<!--<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>-->
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.EdgeNGramFilterFactory"
minGramSize="3"
maxGramSize="30"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<!--<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>-->
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
</analyzer>
</fieldtype>
search = City.search do
fulltext params[:q]
paginate page: 1, per_page: 10
end
searchable do
text :composite_name do
"#{name} #{country.name}"
end
end