インデックス時にドキュメントブーストを使用しようとしましたが、効果がないようです。Sunspot のようにモデルをセットアップしました
Spree::Product.class_eval do
searchable :auto_index => true, :auto_remove => true do
text :name, :boost => 2.0, stored: true
text :description, :boost => 1.2, stored: false
boost { boost_value }
end
end
boost_value
フィールドは、ユーザーがフロントエンドでブーストを変更できるデータベース内のフィールドです。インデックス作成時 (初めてインデックスを作成したとき、または製品が更新されたとき) に保存されます。データベースには約 3600 個の製品があり、デフォルトboost_value
は1.0
. 製品のうちの 2 つが異なりboost_values
、1 つは5.0
で、もう1 つは でした2.0
。
ただし、Solr からすべての製品を取得したいだけの場合、ドキュメント ブーストは順序やスコアに影響を与えないようです。
solr = ::Sunspot.new_search(Spree::Product) do |query|
query.order_by("score", "desc")
query.paginate(page: 1, per_page: Spree::Product.count)
end
solr.execute
solr.results.first
Solr クエリ自体は次のようになります。
http://localhost:8982/solr/collection1/select?sort=score+desc&start=0&q=*:*&wt=xml&fq=type:Spree\:\:Product&rows=3600&debugQuery=true
debugQuery=true
スコアが何であるかを確認するために、最後にa を追加しました。しかし、スコアは表示されません。
用語を検索すると、同じことが起こります。testtest
たとえば、フィールド内に一意の文字列を持つ 2 つの製品がありname
ます。この用語を検索すると、ドキュメント ブーストは順序に影響しません。
だから私の質問は:
- データベース フィールドに基づいて、ドキュメントごとのインデックス時間ブーストを使用できますか?
- ドキュメント ブーストは に効果があり
q=*:*
ますか? - どうすればこれをデバッグできますか?
- または、solr にドキュメント ブーストを含める必要があることを指定する必要がありますか?