Hi

I have created a RTFHandler which takes a RTF file and creates a lucene Document which is indexed. The RTFHandler looks like something like this:

if (bodyText != null) {
                        Document document = new Document();
Field field = new Field(MetaDataEnum.BODY.getDescription(), bodyText.trim(), Field.Store.YES, Field.Index.ANALYZED);
                        document.add(field);
                        
                
}

I am using Java Built in RTF text extraction. When I run my test to verify that the document contains text that I expect this works fine. I get the following when I print the document:

Document<stored/uncompressed,indexed,tokenized<body:This is a test rtf document that will be indexed.

Amin Mohammed-Coleman> stored/ uncompressed,indexed<path:rtfDocumentToIndex.rtf> stored/ uncompressed,indexed<name:rtfDocumentToIndex.rtf> stored/ uncompressed,indexed<type:RTF_INDEXER> stored/ uncompressed,indexed<summary:This is a >>


The problem is when I use the following to search I get no result:

MultiSearcher multiSearcher = new MultiSearcher(new Searchable[] {rtfIndexSearcher});
                        Term t = new Term("body", "Amin");
                        TermQuery termQuery = new TermQuery(t);
                        TopDocs topDocs = multiSearcher.search(termQuery, 1);
                        System.out.println(topDocs.totalHits);
                        multiSearcher.close();

RftIndexSearcher is configured with the directory that holds rtf documents. I have used Luke to look at the document and what I am finding in the overview tab is the following for the document:

1       body    test
1       id      1234
1       name    rtfDocumentToIndex.rtf
1       path    rtfDocumentToIndex.rtf
1       summary This is a
1       type    RTF_INDEXER
1       body    rtf


However on the Document tab I am getting (in the body field):

This is a test rtf document that will be indexed.

Amin Mohammed-Coleman


I would expect to get a hit using "Amin" or even "document". I am not sure whether the
line:
TopDocs topDocs = multiSearcher.search(termQuery, 1);

is incorrect as I am not too sure of the meaning of "Finds the top n hits for query." for search (Query query, int n) according to java docs.

I would be grateful if someone may be able to advise on what I may be doing wrong. I am using Lucene 2.4.0


Cheers
Amin



                

Reply via email to