新しいハンドラーを作成したsolrnetを使用していますが、「qt」やdefTypeなどの追加のパラメーターを使用せずに、標準のクエリハンドラー「select」を「new」に変更したいと考えています。
現在 「http://localhost:8080/solr/select?q= :」
「http://localhost:8080/solr/new?q= :」が欲しい
これが可能かどうか教えてください。
新しいハンドラーを作成したsolrnetを使用していますが、「qt」やdefTypeなどの追加のパラメーターを使用せずに、標準のクエリハンドラー「select」を「new」に変更したいと考えています。
現在 「http://localhost:8080/solr/select?q= :」
「http://localhost:8080/solr/new?q= :」が欲しい
これが可能かどうか教えてください。
SolrNet Google グループの SolrQueryExecutor でハンドラー エンドポイントを変更するという投稿には、これを行うには、説明されているように SolrQueryExecutor を変更する必要があると記載されています。
質問: Solr インスタンスで、検索エンドポイントを「/select」から「/search」に変更しました。SolrQueryExecuter には、「/select」の DefaultHandler を返すだけの Handler プロパティがあることがわかります。これを変更してエンドポイントを使用する方法はありますか?
回答:その通りです。SolrQueryExecuter でそのプロパティを変更する必要があります。その方法は、IoC コンテナーによって異なります。たとえば、ビルトイン コンテナーを使用して、Remove() ISolrQueryExecuter を実行し、変更されたハンドラー プロパティを使用して独自のコンテナーを追加します。これは非常にまれなことです。通常は、異なるリクエスト ハンドラーをエンドポイントとしてではなく、通常の名前としてセットアップするだけで、qt パラメーターを使用していずれかを選択できます。
別の要求ハンドラーを呼び出すことだけが必要な場合は、ISolrQueryExecuter のインスタンスを取得し、それに応じてハンドラーを設定するだけです。組み込みの SolrQueryExecuter を具体的なデコレータに置き換える必要はありません。
Startup.Init<T>(new SolrConnection("http://localhost:8080/solr")),
var executor = ServiceLocator.Current.GetInstance<ISolrQueryExecuter<T>>() as SolrQueryExecuter<T>;
executor.Handler = "/new";
ところで、あなたの URL にはコレクションの名前がないようです。