#include "Xpclucene.h" #include "nsCOMPtr.h" #include "nsLuceneIndexSearcher.h" #include "nsILuceneIndexReader.h" #include "nsLuceneQuery.h" #include "nsLuceneHits.h" #include "nsLuceneFactory.h" #include "CLucene/CLConfig.h" #include "CLucene.h" NS_IMPL_ISUPPORTS1(nsLuceneIndexSearcher, nsILuceneIndexSearcher) nsLuceneIndexSearcher::nsLuceneIndexSearcher(lucene::search::IndexSearcher* pIndexSearcher, nsILuceneIndexReader* indexReader) { mIndexSearcher = pIndexSearcher; /* * Keep an owning reference to this searcher's index reader since it needs * to stick around for the lifetime of the searcher */ mIndexReader = indexReader; } nsLuceneIndexSearcher::~nsLuceneIndexSearcher() { delete mIndexSearcher; } lucene::search::IndexSearcher* nsLuceneIndexSearcher::getIndexSearcher() { return mIndexSearcher; } NS_IMETHODIMP nsLuceneIndexSearcher::Search(nsILuceneQuery* query, nsILuceneHits** _retval) { LUCENETRYCATCH_START lucene::search::Query* q = ((nsLuceneQuery*) query)->getQuery(); lucene::search::Hits* h = mIndexSearcher->search(q); nsCOMPtr hits = new nsLuceneHits(h, this); NS_ENSURE_TRUE(hits, NS_ERROR_OUT_OF_MEMORY); *_retval = hits; NS_ADDREF(*_retval); return NS_OK; LUCENETRYCATCH_END } NS_IMETHODIMP nsLuceneIndexSearcher::MaxDoc(PRInt16* _retval) { LUCENETRYCATCH_START *_retval = mIndexSearcher->maxDoc(); return NS_OK; LUCENETRYCATCH_END }