我注意到 solr 4.0 有一个连接功能,我想用它来连接子文档。
就像是
<book>
<bookid>1</bookid>
<Title>This book is epic</title>
</book>
<page>
<bookid>1</bookid>
<number>1</number>
<pagecontent>this is the first page of the epic book</pagecontent>
</page>
<page>
<bookid>1</bookid>
<number>2</number>
<pagecontent>this is the second page of the epic book</pagecontent>
</page>
如何加入这些子文档?
我q=text:second .
想像 Where text is a copyfield 一样查询这个,其中包含所有其他字段。
结果应该是第二页和它的书。我有一个更复杂的架构,然后只是书本和页面。还有其他类型的子文档具有父 id:book。
在 Solr 3.6 中,我将所有这些子文档存储为多值字段,并检查组合是否与连接字段一起存在。这不是一个好方法,需要大量编码 + 它依赖于 Java 的 Strings.contains。我希望solr 4.0加入可以帮助我。但我不明白如何编写正确的查询以及如何检索带有页面列表的书之类的结果。
我还阅读了有关为每个子文档类型使用多个索引的信息,但我不知道这将如何影响文档评分等。
编辑:
在这里他们说他们只将内部查询的结果放入最终结果中。我是否应该更改 id 进行 2 次查询,然后合并结果?这对我来说也很糟糕......