public IBSimilarityProvider(String name, Settings settings, Settings indexSettings) { super(name); Distribution distribution = parseDistribution(settings); Lambda lambda = parseLambda(settings); Normalization normalization = parseNormalization(settings); this.similarity = new IBSimilarity(distribution, lambda, 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); }
/** spl/df/h2 with default parameters */ public void test() throws Exception { Similarity sim = getSimilarity("text"); assertEquals(IBSimilarity.class, sim.getClass()); IBSimilarity ib = (IBSimilarity) sim; assertEquals(DistributionSPL.class, ib.getDistribution().getClass()); assertEquals(LambdaDF.class, ib.getLambda().getClass()); assertEquals(NormalizationH2.class, ib.getNormalization().getClass()); }
/** ll/ttf/h3 with parameterized normalization */ public void testParameters() throws Exception { Similarity sim = getSimilarity("text_params"); assertEquals(IBSimilarity.class, sim.getClass()); IBSimilarity ib = (IBSimilarity) sim; assertEquals(DistributionLL.class, ib.getDistribution().getClass()); assertEquals(LambdaTTF.class, ib.getLambda().getClass()); assertEquals(NormalizationH3.class, ib.getNormalization().getClass()); NormalizationH3 norm = (NormalizationH3) ib.getNormalization(); assertEquals(900f, norm.getMu(), 0.01f); }
@Override public Similarity getSimilarity() { IBSimilarity sim = new IBSimilarity(distribution, lambda, normalization); sim.setDiscountOverlaps(discountOverlaps); return sim; }