@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); }
static Normalization parseNormalization(String expr, String c, String mu, String z) { if (mu != null && !"H3".equals(expr)) { throw new RuntimeException( "parameter mu only makes sense for normalization H3"); } if (z != null && !"Z".equals(expr)) { throw new RuntimeException( "parameter z only makes sense for normalization Z"); } if (c != null && !("H1".equals(expr) || "H2".equals(expr))) { throw new RuntimeException( "parameter c only makese sense for normalizations H1 and H2"); } if ("H1".equals(expr)) { return (c != null) ? new NormalizationH1(Float.parseFloat(c)) : new NormalizationH1(); } else if ("H2".equals(expr)) { return (c != null) ? new NormalizationH2(Float.parseFloat(c)) : new NormalizationH2(); } else if ("H3".equals(expr)) { return (mu != null) ? new NormalizationH3(Float.parseFloat(mu)) : new NormalizationH3(); } else if ("Z".equals(expr)) { return (z != null) ? new NormalizationZ(Float.parseFloat(z)) : new NormalizationZ(); } else if ("none".equals(expr)) { return new Normalization.NoNormalization(); } else { throw new RuntimeException("Invalid normalization: " + expr); } }
/** 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); }
/** 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); }