フリーテキスト検索に太陽黒点solrを使用しています。トレーダーモデルからトレーダーを検索しようとしています。これが検索可能なブロックです
searchable do
text :name
text :postcode
text :phone
text :phone_alt
text :phone_mobile
end
ここにschema.xmlがあります
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="20" side="front"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="20" side="back"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="20" side="front"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="20" side="back"/>
</analyzer>
</fieldType>
そして、ここにコントローラーコードがあります
search = Trader.search do
keywords params[:q] do
minimum_match 2
end
end
@traders = search.results
トレーダー モデルに 2 人のトレーダーがいるとしましょう。その名も「グリフィンドールホール」と「レイブンクローホール」。開発中に 'Hall' を使用して検索すると、このトレーダーの両方が表示されます。本番環境にデプロイした後、同じクエリ文字列に対して最初のトレーダーのみが返されます。これは正しくありません。実際、問題はどこにあるのでしょうか。