2012-02-20 15 views
1

私ができることがあれば、私はsolrで見ている検索結果を改善するのに役立つのだろうかと思っています。solr + sunspotによる検索結果の改善

"Glenlivet 18 year"の値を持つテキストフィールド "name"を持つProductモデルがあります。

は、私は私のプロダクトモデルでは、この検索可能なブロックを持っている:私は「グレンリベットシングルモルトスコッチ18年750ML」を検索すると

searchable do 
    text :name 
end 

は、私はゼロの結果を得ます。

1.9.3-p0 :001 > Product.search { fulltext "The Glenlivet Single Malt Scotch 18 Yr. 750ML"}.results 
=> [] 

私は結果を得るために検索クエリを沸かせなければならないようですが、これはあまり有用ではありません。

1.9.3-p0 :002 > Product.search { fulltext "The Glenlivet 18 Yr. 750ML"}.results 
=> [] 

1.9.3-p0 :006 > Product.search { fulltext "The Glenlivet Single Malt 18"}.results 
=> [] 

これは実際にはうまくいくはずです。

ついに次に
1.9.3-p0 :003 > Product.search { fulltext "The Glenlivet 18 Yr."}.results 
=> [] 

1.9.3-p0 :007 > Product.search { fulltext "Glenlivet 18"}.results 
Product Load (0.2ms) SELECT `products`.* FROM `products` WHERE `products`.`id` IN (8) 
=> [#<Product id: 8, name: "The Glenlivet 18 year"] 

それはsunspot_solr宝石が作成するSolrの中のすべてのデフォルト設定です。ここに私の設定ファイルは、以下のとおりです。それはかなりのフルテキスト検索の目的に反した結果、これらの種類によって

。これらの結果が厳しくは見えないように、私が調整することができる設定がありますか?

編集:

:minimum_match => 4の追加と同義語の設定は、私が望む結果を提供するようです。

Product.search { fulltext "The Glenlivet Single Malt Scotch 18 Yr. 750ML", :minimum_match => 4}.results 
+0

'schema.xml'からfulltextフィールドとfieldTypeの定義を投稿できますか? – javanna

+0

私は自分のschema.xmlを追加しましたhttp://pastebin.com/53ryHT6H – AdamB

答えて

1

その後、最小一致の設定を見て、あなたのfullextフィールドは、テキストではなく文字列として扱われていることを確認します:

http://wiki.apache.org/solr/DisMaxQParserPlugin#mm_.28Minimum_.27Should.27_Match.29

また、あなたは年と年を同一視する同義語が必要になる場合があります。

+0

その設定はどこにありますか?私は同義語 "yr => year"だけを追加しようとしましたが、 "Product.search {fulltext" Glenlivet 18 yr "}。results"という結果は得られません。私はsolrを再起動し、synonyms.txtを変更するたびに再インデックスを作成しました。 – AdamB

+0

mmは、solrconfigのdismaxクエリー・ハンドラの一部として設定されます。 –

+1

シノニムフィルタ係数は、インデックスまたはクエリ時に設定する必要があります。そのクラスの情報はここにあります:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory –