From 267859c784f2e777064c4235b92ff3c09b346726 Mon Sep 17 00:00:00 2001 From: kimchy Date: Mon, 22 Mar 2010 13:59:25 +0200 Subject: [PATCH] another test --- .../deps/lucene/SimpleLuceneTests.java | 56 +++++++++++++++++-- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/deps/lucene/SimpleLuceneTests.java b/modules/elasticsearch/src/test/java/org/elasticsearch/deps/lucene/SimpleLuceneTests.java index acafa95a52e..37925f17c59 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/deps/lucene/SimpleLuceneTests.java +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/deps/lucene/SimpleLuceneTests.java @@ -20,10 +20,7 @@ package org.elasticsearch.deps.lucene; import org.apache.lucene.document.*; -import org.apache.lucene.index.IndexReader; -import org.apache.lucene.index.IndexWriter; -import org.apache.lucene.index.Term; -import org.apache.lucene.index.TermEnum; +import org.apache.lucene.index.*; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.TermQuery; import org.apache.lucene.search.TopDocs; @@ -202,6 +199,57 @@ public class SimpleLuceneTests { indexWriter.close(); } + /** + * A test just to verify that term freqs are not stored for numeric fields. int1 is not storing termFreq + * and int2 does. + */ + @Test public void testNumericTermDocsFreqs() throws Exception { + Directory dir = new RAMDirectory(); + IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true, IndexWriter.MaxFieldLength.UNLIMITED); + + Document doc = new Document(); + NumericField field = new NumericField("int1").setIntValue(1); + field.setOmitNorms(true); + field.setOmitTermFreqAndPositions(true); + doc.add(field); + + field = new NumericField("int1").setIntValue(1); + field.setOmitNorms(true); + field.setOmitTermFreqAndPositions(true); + doc.add(field); + + field = new NumericField("int2").setIntValue(1); + field.setOmitNorms(true); + field.setOmitTermFreqAndPositions(false); + doc.add(field); + + field = new NumericField("int2").setIntValue(1); + field.setOmitNorms(true); + field.setOmitTermFreqAndPositions(false); + doc.add(field); + + indexWriter.addDocument(doc); + + IndexReader reader = indexWriter.getReader(); + + TermDocs termDocs = reader.termDocs(); + + TermEnum termEnum = reader.terms(new Term("int1", "")); + termDocs.seek(termEnum); + assertThat(termDocs.next(), equalTo(true)); + assertThat(termDocs.doc(), equalTo(0)); + assertThat(termDocs.freq(), equalTo(1)); + + termEnum = reader.terms(new Term("int2", "")); + termDocs.seek(termEnum); + assertThat(termDocs.next(), equalTo(true)); + assertThat(termDocs.doc(), equalTo(0)); + assertThat(termDocs.freq(), equalTo(2)); + + reader.close(); + indexWriter.close(); + } + private IndexReader refreshReader(IndexReader reader) throws IOException { IndexReader oldReader = reader; reader = reader.reopen();