1

Sunspot (ルビー) で Solr を使用していますが、他の制約により、DisMax パーサーの代わりに Lucene パーサーを使用する必要があります。usernameフィールドとfirst_nameフィールドを同時に使用して検索できるようにする必要があります。

DisMax を使用している場合、qf="username+first_name" を指定できますが、lucene パーサーのみを使用すると、df (デフォルト フィールド) しか設定できず、複数のフィールドを指定することはできません。

lucene パーサーを使用して複数のフィールドを検索するにはどうすればよいですか?

更新: 回答: q パラメータを使用するだけです

adjust_solr_params do |params|
   params[:defType] = "lucene"      
   params[:q] = "username:\"#{params[:q]}\" OR first_name:\"#{params[:q]}\""
 end
4

2 に答える 2

2

スキーマでフィールドのコピー命令を使用して、検索対象のすべてのフィールドから「キャッチオール」フィールドを作成できます。次に、そのフィールドに df を設定します。

于 2010-11-17T13:36:11.017 に答える
1

Karussell のコメントを拡張すると、デフォルト フィールドはまさにデフォルトです。必要な数のフィールドを明示的に指定できます。デフォルトが機能するのは、指定しない場合のみです。

したがって、次のようなクエリusername:foo first_name:barは、ユーザー名が "foo" で first_name が "bar" のドキュメントを検索します。

于 2010-11-17T16:23:07.900 に答える