たとえば、モデルに次のコードが含まれています。
class Facility < ActiveRecord::Base
...
searchable do
text :name
text :facility_type do
end
...
そしてこれは検索コントローラーで:
@search = Facility.search do
keywords(query) do
boost_fields :name => 1.9,
:facility_type => 1.98
end
...
そして、2つのFacilityオブジェクトがあります。1つは「cafe」タイプですが、名前に「cafe」という単語は含まれていません。2つ目は、たとえば「cafe sun」と呼ばれますが、「bar」タイプです。事実。
query = "cafe"で検索を実行し、応答で両方の機能を取得しましたが、スコアは「カフェサン」の場合は5.003391、実際の「カフェ」の場合は1.250491です。
2回目の試行では
boost_fields :name => 1.9, :facility_type => 3
「カフェサン」のスコアは変わりませんが、「カフェ」はやや成長しました-1.8946824
それで、結果がスコアでソートされている限り、それがどのように計算されるのか興味がありますか?
または、間違ったトークナイザーなどを選択していますか?これが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.EdgeNGramFilterFactory"
minGramSize="3"
maxGramSize="30"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>