簡體   English   中英

Solr 4.0如何加入子文檔

[英]Solr 4.0 how to join subdocuments

我注意到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 . 其中text是一個復制字段,其中包含所有其他字段。

結果應該是第二頁及其書。 我有一個更復雜的架構,然后才是書和頁。 還有其他類型的子文檔,其父ID為:book。

在Solr 3.6中,我將所有這些子文檔存儲為多值字段,並檢查組合是否存在帶隱含字段。 這不是一個好方法,需要大量編碼,並且依賴於Java的Strings.contains。 我希望Solr 4.0加入可以對我有所幫助。 但是我不明白如何編寫正確的查詢以及如何檢索像書一樣帶有頁面列表的結果。

我還閱讀了有關為每種子文檔類型使用多個索引的信息,但我不知道這將如何影響文檔評分等。

編輯:

Solr加入

在這里,他們說他們只將內部查詢的結果放在最終結果中。 我應該用ID更改兩次查詢,然后合並結果嗎? 這也讓我感到難過...

新答案:索引父子並使用blockjoin查詢。 查看blockjoin信息

下面的答案是舊的。 新的solr版本支持blockjoin,而無需編寫插件等。

我通過為solr編寫queryparserplugin,使用了lucenequerytimejoin(此連接在子文檔上具有評分選項)。

該鏈接解釋了我所做的一些事情: Querytimejoin Solr

lucene開發人員之一解釋了quertimejoin: Blog QueryTimeJoin

此解決方案不支持多個核心。(主干solr連接具有此功能)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM