我正在尝试提供文本搜索以根据城市的名称和所属国家/地区的名称来查找城市。
例如,我想返回Milan, Italy
搜索条件mil ita
,或者Los Angeles, United States
搜索los ang uni
.
这些是我拥有的当前模型(省略了验证):
class City < ActiveRecord::Base
belongs_to :country
searchable do
text :name
text :country do
country.name
end
end
end
和
class Country < ActiveRecord::Base
end
这是我的 solrschema.xml
文件的相关部分:
<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
这里发生的情况是,如果我搜索mil
我会得到Milan, Italy
结果,但搜索mil ita
不会返回任何内容。
有任何想法吗?
先感谢您,
河。