2017-05-18 1 views
0

Ich habe folgende lucene Indizes in collection.xconfLucene-Suche auf Inhalte von mehreren Tags (eXist-db)

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

Mein XQuery-Code macht dann die folgende Abfrage:

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

Now I wollen, sagen wir, auf suchen:

-pommern erik 

Nun sind alle Dokumente in Abfrage-Ergebnisse haben das Wort „erik“, aber nicht die Wort "Pommern" im Inhalt des Tei: Text-Tags.

Aber einige der Ergebnisse haben beide "Erik" und "Pommern" in der Tei: Zusammenfassung Tag.

Wie kann ich einen XPath machen, so dass der Benutzer über alle drei Tags mit Lucene Syntax (so dass der Inhalt der erscheint als ein Text drei Tags) suchen?

Antwort

0

Im Moment tun Sie eine Vereinigung der Ergebnisse, Sie brauchen stattdessen eine Kreuzung.

das Sie wirklich gegen die Eltern fragen tun müssen, und und die Prädikate zusammen, so etwas wie:

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

Vielen Dank für die Antwort. Leider ist das zu restriktiv. Das Ergebnis dieser Abfrage gibt nur Ergebnisse mit "erik" sowohl in der Zusammenfassung als auch im Text zurück. Was ich will ist die Abfrage, um den Inhalt der drei Tags wie der Inhalt eines Tags zu behandeln. Etwas wie: $ dokumente [ft: query (.// tei: text + .//tei:summary + .//tei:placeName, $ q)]] – user2728690

+0

Aufbauend auf Adams Antwort und Ihre Antwort versuchen Sie dies: ' $ Dokumente [ft: query (.// tei: Text, $ q) oder ft: query (.// tei: Zusammenfassung, $ q) oder ft: query (.// tei: placeName, $ q)] ' – joewiz

+0

Die obige or-Abfrage gibt 618 Ergebnisse zurück und der Wert in der Frage gibt 864 Ergebnisse zurück. Beide Ergebnisse enthalten leider immer noch Ergebnisse mit dem Wort "pommern" in der Zusammenfassung. Wir haben uns entschieden, nur noch den Inhalt des Tei: -Text-Tags zu suchen (was funktioniert), da die anderen Ergebnisse die Benutzer verwirren werden. – user2728690

Verwandte Themen