2017-05-18 8 views
0

私はcollection.xconfLucene検索(はeXist-DB)

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

で、次の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 

:、たとえば、上で検索したいですtei:textタグの内容に「pommern」という単語が含まれています。

しかし、一部の結果には、「erik」と「pommern」の両方がtei:summaryタグに含まれています。

ユーザーは3つのタグ をlucene構文で検索できるように(3つのタグの内容が の1つのテキストとして表示されるように)、どのようにしてxpathを作成できますか?

答えて

0

結果の結合をしている瞬間に、代わりに交差点が必要です。一緒にあなたが本当に親に対してクエリを実行する必要がある。これを行うために

とと述語のようなもの:

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

は答えをいただき、ありがとうございます。残念ながら、これはあまりにも制限的です。このクエリの結果は、要約とテキストの両方に "erik"という結果を返します。 私が望むのは、1つのタグの内容のように、3つのタグの内容を処理するクエリです。次のようにしてください: $ documents [ft:query(.// tei:text + .//tei:summary + .//tei:placeName、$ q)] – user2728690

+0

アダムの答えとあなたの返信を基にして、 $ documents); – joewiz

+0

$ document [ft:query(.// tei:text、$ q)]またはft:query(.// tei:要約、$ q)またはft:上記のor-queryは618の結果を返し、質問の結果は864の結果を返します。しかし、両方の結果には残念ながら、要約に「pommern」という単語が含まれています。他の結果がユーザーを混乱させるので、私たちは今のところ、テキストタグの内容を検索することにしました(これは動作します)。 – user2728690