diff --git a/source/de/anomic/kelondro/text/DocumentIndex.java b/source/de/anomic/kelondro/text/DocumentIndex.java index ebf8ba3e2..631546a91 100644 --- a/source/de/anomic/kelondro/text/DocumentIndex.java +++ b/source/de/anomic/kelondro/text/DocumentIndex.java @@ -52,7 +52,7 @@ import de.anomic.yacy.logging.Log; */ public class DocumentIndex extends Segment { - private RankingProfile textRankingDefault = new RankingProfile(QueryParams.CONTENTDOM_TEXT); + private static final RankingProfile textRankingDefault = new RankingProfile(QueryParams.CONTENTDOM_TEXT); //private Bitfield zeroConstraint = new Bitfield(4); File poison = new File("."); @@ -155,8 +155,7 @@ public class DocumentIndex extends Segment { * @return a list of files that contain the given string */ public ArrayList find(String querystring, int pos, int count) { - QueryParams query = new QueryParams(querystring, 100, textRankingDefault, null); - ArrayList result = findMetadata(query, this); + ArrayList result = findMetadata(querystring, this); ArrayList files = new ArrayList(); for (URLMetadataRow row : result) { files.add(row.metadata().url().getLocalFile()); @@ -165,6 +164,13 @@ public class DocumentIndex extends Segment { } return files; } + + public static final ArrayList findMetadata( + final String querystring, + final Segment indexSegment) { + QueryParams query = new QueryParams(querystring, 100, textRankingDefault, null); + return findMetadata(query, indexSegment); + } public static final ArrayList findMetadata( final QueryParams query, @@ -189,13 +195,25 @@ public class DocumentIndex extends Segment { return find(querystring, 0, 20); } + /** + * close the index. + * This terminates all worker threads and then closes the segment. + */ public void close() { - super.close(); + // send termination signal to worker threads for (int i = 0; i < this.worker.length; i++) { try { this.queue.put(poison); } catch (InterruptedException e) {} } + // wait for termination + for (int i = 0; i < this.worker.length; i++) { + try { + this.worker[i].join(); + } catch (InterruptedException e) {} + } + // close the segment + super.close(); } public static void main(String[] args) {