Lucene搜索几个标签的内容(eXist-db)

时间:2017-05-18 14:36:45

标签: xpath lucene xquery exist-db

我在collection.xconf中有以下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

现在查询结果中的所有文档都有“erik”这个词,但没有 在tei:text标签的内容中单词“pommern”。

但是有些结果既有“erik”又有“pommern” tei:摘要标签。

如何创建xpath以便用户可以搜索所有三个标记 使用lucene语法(以便三个标记的内容显示为 一个文字)?

1 个答案:

答案 0 :(得分:0)

目前你正在对结果进行联合,你需要一个交叉点。

要做到这一点,你真的需要一起查询父和谓词,如:

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