2017-04-23 4 views
0

So habe ich einen Index, der von Lucene (Java) erstellt wird. Ich versuche, den Index, wie folgendKann Feldinhalt von Lucene-Index nicht lesen

TopDocs result = searcher.search(query, maxResults); 
for (ScoreDoc scoreDoc : result.scoreDocs) { 
    Document doc = searcher.doc(scoreDoc.doc); 
    LogService.logger().warning("Title| " + doc.get("title")); 
    LogService.logger().warning("URL| " + doc.get("url")); 

Der Code zu suchen, druckt das URL-Feld, sondern druckt null für das Titelfeld.

Meine erste Schätzung war, dass es möglicherweise ein Problem mit dem Feldnamen oder der Inhalt ist eigentlich Null.

Allerdings habe ich mit Lucene Luke (GUI-based Inspection Tool) überprüft und der Name des Feldes scheint in Ordnung zu sein und der Inhalt ist definitiv nicht null.

Ich bin nicht sicher, was könnte der Grund dafür sein .. irgendwelche Vorschläge?

PS: Beide Indizierung und Suche wurden unter Verwendung der gleichen lucene Version ausgeführt (6.2.1)

+0

Sind Sie eine Liste der Felder in Such Anfrage spezifiziert? –

+0

@DarshanMehta überhaupt nicht –

+0

Könnten Sie zeigen, hat die relevanten Teile des Indexierungscodes? –

Antwort

0

Nun, Sie haben nicht genügend Informationen, um sicher zu sein, zur Verfügung gestellt, aber ich würde das Feld isn wettet‘ t gespeichert. Wenn Sie beispielsweise eine TextField verwenden und eine Reader oder TokenStream als Quelle verwenden, wird das Feld nicht gespeichert und kann durchsucht werden, aber Sie können es nicht abrufen.

Sie können eine TextField- wie gespeichert machen:

Field titleField = new TextField("title", "The Sun Also Rises", Field.Store.YES); 
Verwandte Themen