/** * Runs a specified lucene query in the specified language with a specified hitcount. * @param query * @param language * @param hitCount * @param filter * @param resolveWpIds if True, returns wikipedia ids. otherwise returns lucene ids. * @return */ public WikiBrainScoreDoc[] search(Query query, Language language, int hitCount, Filter filter, boolean resolveWpIds) { if (!searchers.containsKey(language)) throw new IllegalArgumentException("Unknown language: " + language); try { this.hitCount = hitCount; ScoreDoc[] scoreDocs = searchers.get(language).search(query, filter, hitCount).scoreDocs; WikiBrainScoreDoc[] wikibrainScoreDocs = new WikiBrainScoreDoc[scoreDocs.length]; for (int i = 0; i < scoreDocs.length; i++) { ScoreDoc scoreDoc = scoreDocs[i]; int wpId = resolveWpIds ? getLocalIdFromDocId(scoreDoc.doc, language) : -1; wikibrainScoreDocs[i] = new WikiBrainScoreDoc(scoreDoc.doc, wpId, scoreDoc.score); } return wikibrainScoreDocs; } catch (IOException e) { throw new RuntimeException(e); } }