0

スキーマには 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

毎回バックエンドでこのクエリを生成する必要があります。代わりに、クエリのほとんどの部分が同じままであるためdefaultappendsand/or invariantin 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を作成する必要がありますか?

4

0 に答える 0