0

SOLR をバックエンド検索サービスとして使用する Web アプリケーションがあります。

検索を制御するすべてのリクエストは GET リクエストです。ユーザーが何かを行い (何かを入力し、ページ サイズを選択し、並べ替え条件を選択)、検索ボタンを押した後、Web アプリの対応するサーブレットが SOLR を呼び出します。

これで、サーブレットに送信されたパラメーターがブラウザーのアドレス バーに表示されます。これはいいから

1) webapp の各ページはパーマリンクとして保存できます
2) URL を直接変更して検索を制御できます

その上で、特定のパラメーターであるページ サイズについて、何らかの制約を課したいと考えています。つまり、Web アプリの選択メニューが 3 つの選択肢 (5、10、15) を提案する場合、他の値は必要ありません。

さて、サーブレットでそれができることはわかっていますが、SOLR側でも可能かどうか疑問に思っていました...ローカルパラメータ?わからない。

簡単に言うと、SOLR の「rows」パラメーターは 5、10、または 20 でなければなりません。値が 20 を超える場合は、20 が適用されます。

4

1 に答える 1

1

Solr SearchHandlers 内では、構成セクションで概説されているように、いくつかの構成設定を事前定義できます。これにより、次のパラメータの動作を設定できます

  • defaults - リクエスト時にパラメータに値が指定されていない場合に使用されるデフォルトのパラメータ値を提供します。
  • appends - リクエスト時に (またはデフォルトとして) 指定された値に加えて使用される param 値を提供します。
  • invariants - リクエスト時に提供される値に関係なく使用される param 値を提供します。これらは、Solr メンテナが Solr クライアントが利用できるオプションを制限できるようにする方法です。ここで指定されたすべての params 値は、クエリ、「デフォルト」、または「追加」パラメータのいずれかに指定された値に関係なく使用されます。

ただし、これらの 3 つのオプションは、求めているように行の値を 20 に制限するという特定の動作を提供しません。Solr 内でこれを制限する唯一の方法は、カスタム リクエスト ハンドラを作成し、それを Solr にプラグインすることだと思います。記事 - Solr のリクエスト ハンドラーの開発では、独自のリクエスト ハンドラーを作成するために必要な手順の概要を説明しています。

于 2013-08-07T15:35:58.013 に答える