6

SolrNetライブラリを介してApache Solr検索を実装しようとしています。これまでのところ、自分のマシンで Solr のインスタンスを実行し、特定のフィールドに基づいていくつかのクエリを作成することができました。それを行うための私のコードは次のようになります

   var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
   var results = solr.Query(new SolrQueryByField("id", "SP2514N"));

これで問題なく動作しますが、フィールドを指定せずにクエリを作成したいので、検索キーワードを入力すると、solr は利用可能なすべてのフィールドを調べて結果を返します。ここからSolrNetライブラリで

        var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
        var results = solr.Query(new SolrQuery("SP2514N"));

しかし、これはうまくいきませんでした.一番下までドリルダウンすると、Solrインスタンスにデフォルトの検索フィールドを設定して、他に何も選択されていないときにSolrがそのフィールドを検索する必要があることがわかりました(これが私が理解した方法ですこれについてはわかりません)。だから私はSolrでデフォルトのフィールドを設定しに行きました.Solrconfig.XMLを取り、このように編集しました

    <requestHandler name="/query" class="solr.SearchHandler" default="true">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <str name="wt">json</str>
       <str name="indent">true</str>
       <str name="df">text</str>
       <str name="df">id</str>
     </lst>
  </requestHandler>

[ <str name="df">id</str>このフィールドを余分に追加しました].しかし、これも役に立ちませんでしたそして私は立ち往生しています.Solrでデフォルトの検索フィールドを正しく設定する方法を誰か教えてもらえますか?それとも何か間違ったことをしていますか? ここにSolrconfigファイルをアップロードしました

4

2 に答える 2

4

SolrNet から開始しないでください。Solr の組み込み Web 管理インターフェースを使用してください。リクエストハンドラーとパラメーターを理解するまで、そこを繰り返します。次に、SolrNet に戻ります。

あなたの場合、デフォルトのリクエストハンドラを変更し、dfパラメータを 2 回使用しようとしたようです。余分な問題を避けるために、今のところ元のリクエストハンドラーに固執します。

dfパラメータを使用して、単一のフィールドまたは複数のフィールドを検索しようとしていますか? 単一フィールドの場合、パラメーターの値を 1 つだけ保持します。複数の場合は、一連のフィールドを提供できる eDisMax の使用に切り替える必要があります。

繰り返しますが、管理インターフェイスを使用して実験し、ハンドラーのデフォルト パラメーターに追加できます。

于 2013-10-10T01:12:19.463 に答える