スキーマには 8 つのフィールドがあります。インデックスには 2 種類のドキュメントがあります。最初のタイプには本の詳細が含まれ、2 番目のタイプのドキュメントには特定の本のすべてが参照されている場所が含まれます。
このようなスキーマを使用する理由は、インデックス サイズを小さくするためです。私のSolrインデックスのドキュメントは次のようになります-
doc1 -
uniqueKey - <someid>
id - 1
name - Solr
author - something
isbn - something else
subject - null
referenced - null
dataType - detail
doc2 -
uniqueKey - <someid>
id - 1
name - null
author - null
isbn - null
subject - physics
referenced - 2011
dataType - reference
doc3 -
uniqueKey - <someid>
id - 1
name - null
author - null
isbn - null
subject - maths
referenced - 2013
dataType - reference
ユーザーに件名や年を選択させたいが、結果には詳細ドキュメントを表示したい。
これを達成するために、join
次のようなクエリを使用します-
q=dataType:detail&fq={!join from=id to=id}<userySelectedSubjectAndOrYear>&dataType:reference
毎回バックエンドでこのクエリを生成する必要があります。代わりに、クエリのほとんどの部分が同じままであるためdefault
、appends
and/or invariant
in myを使用したいと思います。requestHandler
私は自分で次のことをしようとしましたrequestHandler
<requestHandler name="/usage" class="solr.SearchHandler">
<lst name="defaults">
<int name="rows">10</int>
<str name="wt">json</str>
</lst>
<lst name="appends">
<str name="q">dataType:detail</str>
<str name="fq">{!join from=id to=id}dataType:reference</str>
</lst>
</requestHandler>
/usage?fq=subject:physics
結果が得られないため、ユーザーが選択した件名および/または年を渡します。リンクによると、値を追加する必要があります。私は何が欠けていますか?これを取得するには、独自のカスタムRequestHandler
を作成する必要がありますか?