@Test public void testEquality() throws Exception { NodeSpanQuery term1 = new NodeSpanQuery(ntq("aaa").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("aaa").getQuery()); assertEquals(term1, term2); NodeSpanQuery term3 = new NodeSpanQuery(ntq("aaa").getQuery()); term3.setLevelConstraint(3); assertNotEquals(term1, term3); NodeSpanQuery term4 = new NodeSpanQuery(ntq("aaa").getQuery()); term4.setNodeConstraint(5); assertNotEquals(term1, term4); }
@Test public void testSpanNot() throws Exception { this.addDocuments(this.generateDocuments(2000)); NodeSpanQuery term1 = new NodeSpanQuery(ntq("eight").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("one").getQuery()); NearSpanQuery near = new NearSpanQuery(new SpanQuery[]{term1, term2}, 4, true); NodeSpanQuery term3 = new NodeSpanQuery(ntq("forty").getQuery()); SpanQuery query = new NotSpanQuery(near, term3); checkHits(query, new int[]{801, 821, 831, 851, 861, 871, 881, 891, 1801, 1821, 1831, 1851, 1861, 1871, 1881, 1891}); }
private BooleanSpanQuery toBooleanSpanQuery() throws QueryNodeException { int slop = this.hasSlop() ? this.getSlop() : BooleanQueryNodeBuilder.DEFAULT_SLOP; boolean inOrder = this.hasInOrder() ? this.getInOrder() : BooleanQueryNodeBuilder.DEFAULT_INORDER; final BooleanSpanQuery query = new BooleanSpanQuery(slop, inOrder); // convert clauses for (final QueryClause clause : clauses) { final SpanQuery q = new NodeSpanQuery((com.sindicetech.siren.search.node.NodeQuery) clause.getQuery().toQuery(false)); query.add(q, clause.getNodeBooleanOccur()); } return query; }
@Test public void testSpanExactNested() throws Exception { this.addDocuments(this.generateDocuments(2000)); NodeSpanQuery term1 = new NodeSpanQuery(ntq("three").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("hundred").getQuery()); NearSpanQuery near1 = new NearSpanQuery(new NodeSpanQuery[] {term1, term2}, 0, true); NodeSpanQuery term3 = new NodeSpanQuery(ntq("thirty").getQuery()); NodeSpanQuery term4 = new NodeSpanQuery(ntq("three").getQuery()); NearSpanQuery near2 = new NearSpanQuery(new NodeSpanQuery[] {term3, term4}, 0, true); NearSpanQuery query = new NearSpanQuery(new SpanQuery[] {near1, near2}, 0, true); checkHits(query, new int[] {333, 1333}); // assertTrue(searcher.explain(query, 333).getValue() > 0.0f); }
@Test public void testSpanNearOrdered() throws Exception { this.addDocuments(this.generateDocuments(1000)); NodeSpanQuery term1 = new NodeSpanQuery(ntq("nine").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("six").getQuery()); NearSpanQuery query = new NearSpanQuery(new NodeSpanQuery[] {term1, term2}, 4, true); checkHits(query, 906, 926, 936, 946, 956, 966, 976, 986, 996); }
@Test public void testSpanNearUnordered() throws Exception { this.addDocuments(this.generateDocuments(1000)); NodeSpanQuery term1 = new NodeSpanQuery(ntq("nine").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("six").getQuery()); NearSpanQuery query = new NearSpanQuery(new NodeSpanQuery[] {term1, term2}, 4, false); checkHits(query, 609, 629, 639, 649, 659, 669, 679, 689, 699, 906, 926, 936, 946, 956, 966, 976, 986, 996); }
@Test public void testNotSameParent() throws Exception { this.addDocuments( doc(token("aaa", node(1,1)), token("bbb", node(2,2))) ); NodeSpanQuery term1 = new NodeSpanQuery(ntq("aaa").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("bbb").getQuery()); NearSpanQuery spanQuery = new NearSpanQuery(new NodeSpanQuery[] {term1, term2}, 0, true); Query query = new LuceneProxyNodeQuery(spanQuery); TopDocs hits = searcher.search(query, 100); assertEquals(0, hits.totalHits); }
@Test public void testSpanNearExact() throws Exception { this.addDocuments(this.generateDocuments(500)); NodeSpanQuery term1 = new NodeSpanQuery(ntq("seventy").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("seven").getQuery()); NearSpanQuery spanQuery = new NearSpanQuery(new NodeSpanQuery[] {term1, term2}, 0, true); this.checkHits(spanQuery, 77, 177, 277, 377, 477); QueryUtils.check(term1); QueryUtils.check(term2); QueryUtils.checkUnequal(term1, term2); }
@Test public void testSpanTermQuery() throws Exception { this.addDocuments(this.generateDocuments(100)); NodeSpanQuery term1 = new NodeSpanQuery(ntq("seventy").getQuery()); checkHits(term1, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79); }
@Test public void testSetAncestorPointer() { NodeSpanQuery term1 = new NodeSpanQuery(ntq("aaa").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("bbb").getQuery()); final NearSpanQuery nsq1 = new NearSpanQuery(new SpanQuery[] {term1, term2}, 0, true); final TwigQuery twig = new TwigQuery(); nsq1.setAncestorPointer(twig); assertSame(twig, nsq1.getAncestorPointer()); // clauses must have been updated assertSame(twig, term1.getAncestorPointer()); }
@Test public void testSetAncestorPointer() { NodeSpanQuery term1 = new NodeSpanQuery(ntq("aaa").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("bbb").getQuery()); OrSpanQuery or1 = new OrSpanQuery(new SpanQuery[] {term1, term2}); final TwigQuery twig = new TwigQuery(); or1.setAncestorPointer(twig); assertSame(twig, or1.getAncestorPointer()); // clauses must have been updated assertSame(twig, term1.getAncestorPointer()); NodeSpanQuery term3 = new NodeSpanQuery(ntq("aaa").getQuery()); or1.addClause(term3); // new clause must have been updated assertSame(twig, term3.getAncestorPointer()); }
@Test public void testSetAncestorPointer() { NodeSpanQuery term1 = new NodeSpanQuery(ntq("aaa").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("bbb").getQuery()); final BooleanSpanQuery bsq1 = new BooleanSpanQuery(0, true); bsq1.add(term1, NodeBooleanClause.Occur.MUST); bsq1.add(term2, NodeBooleanClause.Occur.MUST); final TwigQuery twig = new TwigQuery(); bsq1.setAncestorPointer(twig); assertSame(twig, bsq1.getAncestorPointer()); // clauses must have been updated assertSame(twig, term1.getAncestorPointer()); }
@Test public void testNearOrderedNested() throws Exception { this.addDocuments( doc(token("three", node(1,1)), token("hundred", node(1,2)), token("thirty", node(1,3)), token("three", node(1,4))), doc(token("three", node(1,1)), token("hundred", node(1,2)), token("thirty", node(1,3)), token("four", node(1,4))) ); NodeSpanQuery term1 = new NodeSpanQuery(ntq("three").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("hundred").getQuery()); NearSpanQuery near1 = new NearSpanQuery(new NodeSpanQuery[] {term1, term2}, 0, true); NodeSpanQuery term3 = new NodeSpanQuery(ntq("thirty").getQuery()); NodeSpanQuery term4 = new NodeSpanQuery(ntq("three").getQuery()); NearSpanQuery near2 = new NearSpanQuery(new NodeSpanQuery[] {term3, term4}, 0, true); NearSpanQuery spanQuery = new NearSpanQuery(new SpanQuery[] {near1, near2}, 0, true); Query query = new LuceneProxyNodeQuery(spanQuery); TopDocs hits = searcher.search(query, 100); assertEquals(1, hits.totalHits); }
@Test public void testNearOrdered() throws Exception { this.addDocuments( doc(token("aaa", node(1,1)), token("bbb", node(1,2))), doc(token("bbb", node(1,1)), token("aaa", node(1,2))) ); NodeSpanQuery term1 = new NodeSpanQuery(ntq("aaa").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("bbb").getQuery()); NearSpanQuery spanQuery = new NearSpanQuery(new NodeSpanQuery[] {term1, term2}, 0, true); Query query = new LuceneProxyNodeQuery(spanQuery); TopDocs hits = searcher.search(query, 100); assertEquals(1, hits.totalHits); spanQuery = new NearSpanQuery(new NodeSpanQuery[] {term1, term2}, 1, true); query = new LuceneProxyNodeQuery(spanQuery); hits = searcher.search(query, 100); assertEquals(1, hits.totalHits); }
@Test public void testSetLevelConstraint() { NodeSpanQuery term1 = new NodeSpanQuery(ntq("aaa").getQuery()); term1.setLevelConstraint(3); assertEquals(3, term1.getLevelConstraint()); // Level constraint must have been transferred to the inner query assertEquals(3, term1.getQuery().getLevelConstraint()); }
@Test public void testExplain() throws IOException { this.addDocuments( doc(token("three", node(1,1)), token("hundred", node(1,2)), token("thirty", node(1,3)), token("three", node(1,4))) ); NodeSpanQuery term1 = new NodeSpanQuery(ntq("three").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("thirty").getQuery()); NearSpanQuery near1 = new NearSpanQuery(new SpanQuery[] {term1, term2}, 0, false); Query query = new LuceneProxyNodeQuery(near1); Explanation explanation = searcher.explain(query, 0); assertNotNull(explanation); }
@Test public void testSetAncestorPointer() { NodeSpanQuery term1 = new NodeSpanQuery(ntq("aaa").getQuery()); final PositionRangeSpanQuery prsq1 = new PositionRangeSpanQuery(term1, 3, 4); final TwigQuery twig = new TwigQuery(); prsq1.setAncestorPointer(twig); assertSame(twig, prsq1.getAncestorPointer()); // clauses must have been updated assertSame(twig, term1.getAncestorPointer()); }
@Test public void testSetLevelConstraint() { NodeSpanQuery term1 = new NodeSpanQuery(ntq("aaa").getQuery()); final PositionRangeSpanQuery prsq1 = new PositionRangeSpanQuery(term1, 3, 4); prsq1.setLevelConstraint(3); assertEquals(3, prsq1.getLevelConstraint()); // Level constraint must have been transferred to the clauses assertEquals(3, prsq1.getMatch().getLevelConstraint()); }
@Test public void testSetAncestorPointer() { NodeSpanQuery term1 = new NodeSpanQuery(ntq("aaa").getQuery()); final TwigQuery twig = new TwigQuery(); term1.setAncestorPointer(twig); assertSame(twig, term1.getAncestorPointer()); // inner query must have been updated assertSame(twig, term1.getQuery().getAncestorPointer()); }
@Test public void testTwigWithNear() throws Exception { this.addDocuments( doc(token("aa", node(1)), token("aaa", node(1,1)), token("bbb", node(1,3))), doc(token("bb", node(1)), token("aaa", node(1,1)), token("bbb", node(1,3))) ); NodeSpanQuery term1 = new NodeSpanQuery(ntq("aaa").getQuery()); NodeSpanQuery term2 = new NodeSpanQuery(ntq("bbb").getQuery()); NearSpanQuery spanQuery = new NearSpanQuery(new NodeSpanQuery[] {term1, term2}, 1, true); TwigQuery twig = new TwigQuery(); twig.addRoot(ntq("aa").getQuery()); twig.addChild(spanQuery, NodeBooleanClause.Occur.MUST); Query query = new LuceneProxyNodeQuery(twig); TopDocs hits = searcher.search(query, 100); assertEquals(1, hits.totalHits); }