Revision: 18271
http://sourceforge.net/p/gate/code/18271
Author: ian_roberts
Date: 2014-08-21 13:40:10 +0000 (Thu, 21 Aug 2014)
Log Message:
-----------
Re-instated filtering of deleted documents from search results, which appears
to have been broken for quite some time without anyonr noticing...
Modified Paths:
--------------
mimir/trunk/mimir-core/src/gate/mimir/search/RankingQueryRunnerImpl.java
Modified:
mimir/trunk/mimir-core/src/gate/mimir/search/RankingQueryRunnerImpl.java
===================================================================
--- mimir/trunk/mimir-core/src/gate/mimir/search/RankingQueryRunnerImpl.java
2014-08-21 13:36:37 UTC (rev 18270)
+++ mimir/trunk/mimir-core/src/gate/mimir/search/RankingQueryRunnerImpl.java
2014-08-21 13:40:10 UTC (rev 18271)
@@ -139,6 +139,9 @@
docIndex = (documentIndexes != null ?
documentIndexes[(int)(i - start)] : i);
docId = documentIds.getLong(docIndex);
+ // don't need to check for deletion here as we know for sure that
this
+ // doc ID is ok. The only exception would be if it was deleted since
+ // this query was originally issued, but I think we can live with
that
long newDoc = queryExecutor.nextDocument(docId - 1);
// sanity check
if(newDoc == docId) {
@@ -201,7 +204,7 @@
try{
// collect all documents and their scores
if(ranking) scorer.wrap(queryExecutor);
- long docId = ranking ? scorer.nextDocument(-1) :
queryExecutor.nextDocument(-1);
+ long docId = nextNotDeleted();
while(docId >= 0) {
// enlarge the hits list
if(ranking){
@@ -223,7 +226,7 @@
}
// and store the new doc ID
documentIds.add(docId);
- docId = ranking ? scorer.nextDocument(-1) :
queryExecutor.nextDocument(-1);
+ docId = nextNotDeleted();
}
allDocIdsCollected = true;
if(ranking) {
@@ -734,4 +737,19 @@
}
}
}
+
+ /**
+ * Find the next document ID for the current query executor which is not
+ * marked as deleted in the index.
+ */
+ protected long nextNotDeleted() throws IOException {
+ long docId = ranking ? scorer.nextDocument(-1)
+ : queryExecutor.nextDocument(-1);
+ while(docId >= 0 && queryEngine.getIndex().isDeleted(docId)) {
+ docId = ranking ? scorer.nextDocument(-1)
+ : queryExecutor.nextDocument(-1);
+ }
+
+ return docId;
+ }
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
GATE-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gate-cvs