2017-05-18 198 views
0

我在collection.xconf以下的Lucene索引Lucene搜索

<lucene> 
    <text qname="tei:text" /> 
    <text qname="tei:summary"/> 
    <text qname="tei:placeName"/> 
</lucene> 

然後我的XQuery代碼,使下面的查詢:

let $query-results := ($documents[.//tei:text[ft:query(., $q)]], 
        $documents[.//tei:summary[ft:query(., $q)]], 
        $documents[.//tei:placeName[ft:query(., $q)]]) 

現在我想,說,搜索:

-pommern erik 

現在都在查詢結果中的文檔有字「埃裏克」,而不是 字在地的內容,「Pommern酒店」:文本標籤。

但一些結果必須在 地既「埃裏克」和「Pommern酒店」:總結標籤。

如何讓我的XPath,以便用戶可以在所有三個標籤 使用Lucene語法搜索(這樣三個標籤的內容顯示爲 一個文本)?

回答

0

在你正在做的結果的一個聯合的那一刻,你需要一個交叉點來代替。

要做到這一點,你真的需要查詢對父母和與謂詞一起,是這樣的:

$documents[ft:query(.//tei:text, $q)][ft:query(.//tei:summary, $q)][ft:query(.//tei:placeName, $q)] 
+0

謝謝你的答案。不幸的是這太限制了。從該查詢結果僅返回與總結和文字都「埃裏克」的結果。 我想是把三個標記的內容,就像是一個標籤的內容查詢。例如: $ documents [ft:query(。tei:text + .//tei:summary + .//tei:placeName,$ q)] – user2728690

+0

建立在Adam的答案和您的回覆上,試試這個:' $ documents [ft:query(.// tei:text,$ q)或ft:query(.// tei:summary,$ q)或ft:query(。tei:placeName,$ q)]' – joewiz

+0

上面的or查詢返回618個結果,問題中的結果返回864個結果。但不幸的是,這兩個結果仍然包含摘要中帶有「pommern」一詞的結果。現在的文本標籤的(工作),因爲其他的結果會混淆用戶:我們決定只在地的內容搜索。 – user2728690