これは、acts_as_solrがparser_methods.rb内でクエリを構築する方法によるものです。
parser_methods.rb内で行う必要のある変更はほとんどありません。
変化する
models = "AND #{solr_configuration[:type_field]}:#self.name}"
に
models = "#{solr_configuration[:type_field]}:#self.name}"
次に、構築されたモデルの文字列をクエリに含めないでください。
query = "(#{query.gsub(/ *: */,"_t:")}) #{models}"
これをただに変更します
query = "(#{query.gsub(/ *: */,"_t:")})"
次に、このクエリのモデル部分をSOLRへの検索に強制する必要があります。
私はこれをしました.....
query_options[:fq_model] = models
standard.rbに移動しました
必ず追加してください
:fq_model
VALID_PARAMS配列に追加します。
以下を追加しました
if @params[:fq_model]
hash["fq"] = @params[:fq_model]
end
いくつかの余分なケースを追加しましたが、find_by_solrで:fqをオプションにしたい場合を除いて、それらは必要ありません。
これらをすべて配置した後、モデル名を検索できるようになり、期待するはるかに小さな結果セットが得られます。
クエリのtype_t部分がそのメソッドにハードコーディングされているように見えるため、multi_solr_searchも機能するように更新が必要になる可能性があります。
私がこの質問に関連するいくつかのハイライトの問題に遭遇したとき、これのほとんどを理解しました。
Solr1.4での強調表示-requireFieldMatch