我的架构中有8个字段。我在索引中有两种类型的文档。第一种类型包含书籍的详细信息,第二种类型的文档包含所有特定书籍的引用位置。
这种架构的原因是减小索引大小。我的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
,invariant
和/或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
我没有得到任何结果。根据{{3}},它应该附加值。我错过了什么?我是否必须编写自己的自定义RequestHandler
来获取此信息?