3

私はsolrnetを使用しています。タイトルと説明フィールドがあります。両方のフィールドを同時に検索する必要があります。どうすればいいですか?

4

3 に答える 3

4

Jayendra の答えは正しいですが、インデックス時 (copyFields) に単一のフィールドにデータを集約せずにこれを行い、dismax の代わりに標準ハンドラーを使用してクエリ時にそれを行いたい場合は、SolrNet で次のことができます。

var query = Query.Field("title").Is(mytitle) || Query.Field("Description").Is(mydescription);
var results = solr.Query(query);

詳細については、クエリ演算子DSLを参照してください。

于 2011-10-16T13:41:50.940 に答える
2

標準のリクエスト ハンドラを使用している場合 -
新しいフィールド title_description を作成し、タイトルと説明フィールドをこのフィールドにコピーします。
そのフィールドをデフォルトの検索フィールドとして使用します。

<defaultSearchField>title_description</defaultSearchField>

デフォルトの検索フィールドでの検索で起動されたクエリ q -

q=bank

また

dismax または edismax クエリ パーサーを使用できる場合は、新しい要求ハンドラーを定義できます。
クエリ フィールドを qf として定義します。

<requestHandler name="dismax" class="solr.SearchHandler">
   <lst name="defaults">
     <str name="echoParams">explicit</str>
     <!-- Query settings -->
     <str name="defType">edismax</str>
     <str name="qf">
        title description
     </str>
     <str name="q.alt">*:*</str>
     <str name="rows">10</str>
     <str name="fl">*,score</str>
   </lst>
</requestHandler>

クエリ - タイトルと説明フィールドを検索する qt パラメータとして dismax を渡します

q=bank&qt=dismax
于 2011-10-16T08:56:53.680 に答える