package querqy.lucene.rewrite; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.core.KeywordAnalyzer; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.RandomIndexWriter; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.store.Directory; import org.apache.lucene.util.LuceneTestCase; import org.junit.Test; import static querqy.lucene.rewrite.TestUtil.addNumDocs; import static querqy.lucene.rewrite.TestUtil.newTerm; /** * Created by rene on 14/09/2016. */ public class StandardDocumentFrequencyAndTermContextProviderTest extends LuceneTestCase { @Test public void testThatTheTrueDFIsReturned() throws Exception { ConstantFieldBoost fieldBoost = new ConstantFieldBoost(1f); Analyzer analyzer = new KeywordAnalyzer(); Directory directory = newDirectory(); RandomIndexWriter indexWriter = new RandomIndexWriter(random(), directory, analyzer); addNumDocs("f1", "v1", indexWriter, 1); addNumDocs("f1", "v5", indexWriter, 5); indexWriter.close(); IndexReader indexReader = DirectoryReader.open(directory); IndexSearcher indexSearcher = newSearcher(indexReader); StandardDocumentFrequencyAndTermContextProvider provider = new StandardDocumentFrequencyAndTermContextProvider(); ; int idx1 = new DependentTermQuery(newTerm("f1", "v5", provider), provider, fieldBoost).tqIndex; int idx2 = new DependentTermQuery(newTerm("f1", "v1", provider), provider, fieldBoost).tqIndex; DocumentFrequencyAndTermContextProvider.DocumentFrequencyAndTermContext context1 = provider.getDocumentFrequencyAndTermContext(idx1, indexSearcher); DocumentFrequencyAndTermContextProvider.DocumentFrequencyAndTermContext context2 = provider.getDocumentFrequencyAndTermContext(idx2, indexSearcher); assertEquals(5, context1.df); assertEquals(1, context2.df); assertEquals(5, context1.termContext.docFreq()); assertEquals(1, context2.termContext.docFreq()); indexReader.close(); directory.close(); analyzer.close(); } }