Hi Friends,
i'm using lucene to index a file with this format, each lines contains 4
elements which separated by space. because I want to retrieve any line with
special text in a special part, so I try to add each line to index in a
seprate document with 4 fields. for example I named fields A,B,C,D
so i use this code to index my file:
File file = new File("e://data3");
BufferedReader reader = new BufferedReader(new
FileReader(file));
IndexWriter writer = new IndexWriter(indexDirectory, new
SimpleAnalyzer(),true);
writer.setUseCompoundFile(true);
String line;
while ((line = reader.readLine()) != null) {
string[] index = line.split(" ");
Document document = new Document();
document.add(new Field("A", index[0], Field.Store.YES,
Field.Index.UN_TOKENIZED));
document.add(new Field("B", index[1], Field.Store.YES,
Field.Index.UN_TOKENIZED));
document.add(new Field("C", index[2], Field.Store.YES,
Field.Index.UN_TOKENIZED));
document.add(new Field("D", index[3], Field.Store.YES,
Field.Index.UN_TOKENIZED));
writer.addDocument(document);
System.out.println(writer.docCount());
}
} catch (Exception e) {
e.printStackTrace();
}
but when i try to search this index with some letters which exist in for
example field A it fails to find the document(line) :( my search code is as
follows:
try {
IndexSearcher is = new
IndexSearcher(FSDirectory.getDirectory(indexDirectory, false));
Query q = new TermQuery(new Term("A", "hello"));
Hits hits = is.search(q);
for (int i = 0; i < hits.length(); i++) {
Document doc = hits.doc(i);
System.out.println("A: "+doc.get("A")+" B:"+doc.get("B")+"
C:"+doc.get("C")+" D:"+doc.get("D"));
}
} catch (Exception e) {
e.printStackTrace();
}
kindly let me know if there is any error in my code . thanks in advance.