我们有一个电子书索引,其中包含电子书的元数据和每个页面作为单个文档:
父文档包含字段is_parent:true
,id
和doc_id
。
对于父文档,id
与doc_id相同,对于id
为{doc_id}_{page_number}
的子文档,doc_id
。父项及其子项 'fl' => 'id,doc_id,main_type,title,subtitle,publishing_date,page_number,author,score',
'defType' => 'edismax',
'stopwords' => 'true',
'mm' => '1',
'qf' => 'id^10.0 title^50.0 subtitle^40.0 author^20.0',
'q' => 'TEST _query_:"{!parent which=is_parent:true score=Max}{!dismax qf='content' v='TEST'}"^20',
'sort' => 'score DESC'
始终相同(这就是我们知道哪个子项属于哪个子项)。
所以现在面临的挑战是提供全文搜索,使用eDisMax从父母元数据和儿童内容中找到搜索项目的最佳结果,并将它们与分数值相结合。
当前查询如下所示:
_query_
但似乎'_query_:"{!parent which=is_parent:true score=Max}{!dismax qf='content' v='TEST'}"^20',
的分数未添加到主查询的分数中。另外,如果我在开头没有“TEST”术语的情况下执行此操作:'q'=> {{1}}我得到了一个得分值 - 所以得分就在那里,但我不确定如何正确使用它。
是否有其他选项可以使用组合分数进行嵌套搜索?
在问题出现之前为什么我们没有使用SOLR的嵌套文档功能:我们几年前使用SOLR 4.6创建了这个索引,此时此功能不存在。我们现在使用SOLR 5和SOLR 6的IndexUpdater工具将我们的索引更新为SOLR 6。
我们过去无法创建全文搜索,因为SOLR BlockJoin功能根本不支持分数计算,但在SOLR 5中有所改变,因此我们想再试一次。 正确方向的每一个提示都会有所帮助。