public DFRSimilarityProvider(String name, Settings settings, Settings indexSettings) { super(name); BasicModel basicModel = parseBasicModel(settings); AfterEffect afterEffect = parseAfterEffect(settings); Normalization normalization = parseNormalization(settings); this.similarity = new DFRSimilarity(basicModel, afterEffect, normalization); }
@Before public void setupIndex() throws IOException { dirUnderTest = newDirectory(); List<Similarity> sims = Arrays.asList( new ClassicSimilarity(), new SweetSpotSimilarity(), // extends Classic new BM25Similarity(), new LMDirichletSimilarity(), new BooleanSimilarity(), new LMJelinekMercerSimilarity(0.2F), new AxiomaticF3LOG(0.5F, 10), new DFISimilarity(new IndependenceChiSquared()), new DFRSimilarity(new BasicModelBE(), new AfterEffectB(), new NormalizationH1()), new IBSimilarity(new DistributionLL(), new LambdaDF(), new NormalizationH3()) ); similarity = sims.get(random().nextInt(sims.size())); indexWriterUnderTest = new RandomIndexWriter(random(), dirUnderTest, newIndexWriterConfig().setSimilarity(similarity)); for (int i = 0; i < docs.length; i++) { Document doc = new Document(); doc.add(newStringField("id", "" + i, Field.Store.YES)); doc.add(newField("field", docs[i], Store.YES)); indexWriterUnderTest.addDocument(doc); } indexWriterUnderTest.commit(); indexWriterUnderTest.forceMerge(1); indexWriterUnderTest.flush(); indexReaderUnderTest = indexWriterUnderTest.getReader(); searcherUnderTest = newSearcher(indexReaderUnderTest); searcherUnderTest.setSimilarity(similarity); }
/** dfr with default parameters */ public void test() throws Exception { Similarity sim = getSimilarity("text"); assertEquals(DFRSimilarity.class, sim.getClass()); DFRSimilarity dfr = (DFRSimilarity) sim; assertEquals(BasicModelIF.class, dfr.getBasicModel().getClass()); assertEquals(AfterEffectB.class, dfr.getAfterEffect().getClass()); assertEquals(NormalizationH2.class, dfr.getNormalization().getClass()); }
/** dfr with parameterized normalization */ public void testParameters() throws Exception { Similarity sim = getSimilarity("text_params"); assertEquals(DFRSimilarity.class, sim.getClass()); DFRSimilarity dfr = (DFRSimilarity) sim; assertEquals(BasicModelIF.class, dfr.getBasicModel().getClass()); assertEquals(AfterEffectB.class, dfr.getAfterEffect().getClass()); assertEquals(NormalizationH3.class, dfr.getNormalization().getClass()); NormalizationH3 norm = (NormalizationH3) dfr.getNormalization(); assertEquals(900f, norm.getMu(), 0.01f); }
/** LUCENE-3566 */ public void testParameterC() throws Exception { Similarity sim = getSimilarity("text_paramc"); assertEquals(DFRSimilarity.class, sim.getClass()); DFRSimilarity dfr = (DFRSimilarity) sim; assertEquals(BasicModelP.class, dfr.getBasicModel().getClass()); assertEquals(AfterEffectL.class, dfr.getAfterEffect().getClass()); assertEquals(NormalizationH2.class, dfr.getNormalization().getClass()); NormalizationH2 norm = (NormalizationH2) dfr.getNormalization(); assertEquals(7f, norm.getC(), 0.01f); }
@Override public Similarity getSimilarity() { DFRSimilarity sim = new DFRSimilarity(basicModel, afterEffect, normalization); sim.setDiscountOverlaps(discountOverlaps); return sim; }