On Tuesday 15 October 2002 08:50, you wrote: > I want to write a function countIndexEntries(key) to find out how many > entries are there in the index database for a key. I read the faq entry > about counting number of hits, but somehow it doesnt work as expected, > please help: > > I create entries with > indexDocument.add(Field.Keyword(FULLTEXT_KEY_FIELD,key)); > indexDocument.add(Field.Text(FULLTEXT_CONTENTS_FIELD,reader)); > indexwriter.addDocument(indexDocument); > > I try to count the number of entries for a key with > Query query = QueryParser.parse(key, FULLTEXT_KEY_FIELD, analyzer); > count = searcher.search(query).length(); > > to find out if something is not yet indexed (count=0), already indexed > (count=1), or index is inconsistent (count=2). But count is always = 0 :-(
This might depend on your analyzer. For key fields, I prefer to use a lower level API on IndexReader: construct a Term from the field name and the key value and use the IndexReader method that returns an iterator over the docs containing the term, termdocs() iirc. Beware of correct case for the key value. In case you have mutliple key values to check, sorting them before going to the IndexReader helps performance For pure boolean work, the IndexReader is quite useful. > What is wrong or how to acchieve my goal with a different approach? Help is > appreciated. It should work I think. You might try and print the output of the analyzer, ie the actually indexed text, when constructing the document. Have fun, Ype -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
