Why not use a MultiSearcher an all single searchers? Or a Searcher on a MultiReader consisting of all IndexReaders? With that you do not need to merge the results.
By the way: instead of creating a TopDocCollector, you could also call directly, Searcher.search(Query query, Filter filter, int n, Sort sort) Searcher.search(Query query, Filter filter, int n) Filter can be null. It's shorter and if sorting is also involved, simplier to handle (you do not need to switch between ToDocCollector and TopFieldDocCollector). Important: With Lucene 2.9, the searches will be faster using this API (because then each index segment uses an own collector). Uwe ----- Uwe Schindler H.-H.-Meier-Allee 63, D-28213 Bremen http://www.thetaphi.de eMail: u...@thetaphi.de > -----Original Message----- > From: Paul Taylor [mailto:paul_t...@fastmail.fm] > Sent: Friday, March 20, 2009 6:02 PM > To: java-user@lucene.apache.org > Subject: Performance tips on searching > > > Hi, my code receives a search query from the web, there are 5 different > searches that can be searched on - each index is searched with a single > IndexSearcher referenced in a map. it parses then performs the search > and return the best 10 results, with scores readjusted over the results > so that the best score returns 1.0. Am I performing the optiminal search > methods to do what I want ? > > thanks Paul > > IndexSearcher searcher = searchers.get(indexName); > QueryParser parser = new QueryParser(indexName, analyzer); > TopDocCollector collector = new TopDocCollector(10); > try { > searcher.search(parser.parse(query), collector); > } > catch (ParseException e) { > } > Results results = new Results(); > results.totalHits = collector.getTotalHits(); > TopDocs topDocs = collector.topDocs(); > ScoreDoc docs[] = topDocs.scoreDocs; > float maxScore = topDocs.getMaxScore(); > for (int i = 0; i < docs.length; i++) { > Result result = new Result(); > result.score = docs[i].score / maxScore; > result.doc = searcher.doc(docs[i].doc); > results.results.add(result); > } > return results; > > --------------------------------------------------------------------- > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > For additional commands, e-mail: java-user-h...@lucene.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org For additional commands, e-mail: java-user-h...@lucene.apache.org