2010-12-08 5 views
1

Kürzlich haben wir unsere Anwendung um Lucene (2.4.1) erweitert, die mit Jackrabbit (1.6.2) funktioniert. Wir haben alles so gemacht, wie es im Jackrabbit Tutorial beschrieben wurde. Und alles funktioniert fast gut. Aber ich habe ein merkwürdiges Verhalten bemerkt und kann keine Dokumente darüber finden. Ich habe beschlossen, dich danach zu fragen.Lucene Jackrabbit

Zum Beispiel: Ich habe folgenden Text in Knoten (JCR: Inhalt) in jcr: Dateneigenschaft

The quick brown fox jumps over the lazy dog 
[email protected]#$%^& 
travmik! 
tra!vmik 

Meine XPath-Abfrage ist die folgende:

String query = "root/element(*,my:documentBody) 
         [jcr:contains(*/*/element(*),'*" + param +"*')]"; 

Dann versuche ich die Suche nach:

"q", "qu", "qui", "quic", "quick", "k", "ck", "ick", "uick", "quick braun fox", "quick fox" , "tra", "travmik", "mik" - alles gefunden ok

"! Tra vmik" 10

"travmik!", "@ # $!" - nichts

Und, ja, ich alle Sonderzeichen aus this entkommen.

Was habe ich falsch gemacht?

Ps.s. Ich habe noch eine Frage - in Lucene Docs sagt, dass "Sie können nicht ein * oder? Symbol als das erste Zeichen einer Suche verwenden", aber ich benutze und es funktioniert. Warum?

Antwort

0

Ich habe das Problem gefunden. Es gab einige Missverständnisse mit Extraktoren, die in Jackrabbit für die Indexierung von Inhalten verwendet werden. Ich will nicht ins Detail gehen, kann aber sagen, dass dieses Stück Code von einem Extraktoren ist die Ursache für all meine Probleme:

if (!Character.isLetterOrDigit(c)) { 
    if (!space) { 
     space = true; 
     buffer.append(' '); 
     continue; 
    } 
    continue; 
} 

Wenn jemand daran interessiert - ich kann näher erläutern .