都市の名前と属する国の名前に基づいて、都市を検索するためのテキスト検索を提供しようとしています。
たとえば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
何か案は?
前もって感謝します、
r.