this.transpositions = transpositions; this.maxExpansions = maxExpansions; this.setRewriteMethod(new MultiNodeTermQuery.TopTermsScoringNodeBooleanQueryRewrite(maxExpansions));
/** Test the {@link com.sindicetech.siren.search.node.MultiNodeTermQuery.TopTermsBoostOnlyNodeBooleanQueryRewrite} rewrite method. */ @Test public void testNodeConstraintsOnlyRewrite() throws Exception { this.addDocument("<aaa> <bbb> <ccc> <ddd>"); this.addDocument("<bbb> <ddd> <aaa> <ccc>"); this.addDocument("<ddd> <ccc> <aaa> <bbb>"); final NodeTermRangeQuery query = NodeTermRangeQuery.newStringRange(DEFAULT_TEST_FIELD, "aaa", "bbb", true, true); query.setNodeConstraint(0, 1); query.setRewriteMethod(new MultiNodeTermQuery.TopTermsBoostOnlyNodeBooleanQueryRewrite(50)); ScoreDoc[] hits = searcher.search(dq(query), null, 1000).scoreDocs; assertEquals(2, hits.length); query.setRewriteMethod(new MultiNodeTermQuery.TopTermsScoringNodeBooleanQueryRewrite(50)); hits = searcher.search(dq(query), null, 1000).scoreDocs; assertEquals(2, hits.length); query.setRewriteMethod(new MultiNodeTermQuery.NodeConstantScoreAutoRewrite()); hits = searcher.search(dq(query), null, 1000).scoreDocs; assertEquals(2, hits.length); query.setRewriteMethod(MultiNodeTermQuery.CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE); hits = searcher.search(dq(query), null, 1000).scoreDocs; assertEquals(2, hits.length); }
private void checkBooleanTerms(final NodeTermRangeQuery query, final String... terms) throws IOException { query.setRewriteMethod(new MultiNodeTermQuery.TopTermsScoringNodeBooleanQueryRewrite(50)); final NodeBooleanQuery bq = (NodeBooleanQuery) searcher.rewrite(query); final Set<String> allowedTerms = new HashSet<String>(Arrays.asList(terms)); assertEquals(allowedTerms.size(), bq.clauses().size()); for (final NodeBooleanClause c : bq.clauses()) { assertTrue(c.getQuery() instanceof NodeTermQuery); final NodeTermQuery tq = (NodeTermQuery) c.getQuery(); final String term = tq.getTerm().text(); assertTrue("invalid term: "+ term, allowedTerms.contains(term)); allowedTerms.remove(term); // remove to fail on double terms } assertEquals(0, allowedTerms.size()); }