Example usage for org.apache.lucene.search.spans SpanNearQuery getClauses

List of usage examples for org.apache.lucene.search.spans SpanNearQuery getClauses

Introduction

In this page you can find the example usage for org.apache.lucene.search.spans SpanNearQuery getClauses.

Prototype

public SpanQuery[] getClauses() 

Source Link

Document

Return the clauses whose spans are matched.

Usage

From source file:com.tamingtext.qa.PassageRankingComponent.java

License:Apache License

protected void createWeights(String origQuery, SpanNearQuery parsedQuery, Map<String, Float> termWeights,
        Map<String, Float> bigramWeights, IndexReader reader) throws IOException {

    SpanQuery[] clauses = parsedQuery.getClauses();
    //we need to recurse through the clauses until we get to SpanTermQuery
    Term lastTerm = null;/*  ww  w.jav a2  s .co  m*/
    Float lastWeight = null;
    for (int i = 0; i < clauses.length; i++) {
        SpanQuery clause = clauses[i];
        if (clause instanceof SpanTermQuery) {
            Term term = ((SpanTermQuery) clause).getTerm();
            Float weight = calculateWeight(term, reader);
            termWeights.put(term.text(), weight);
            if (lastTerm != null) {//calculate the bi-grams
                //use the smaller of the two weights
                if (lastWeight.floatValue() < weight.floatValue()) {
                    bigramWeights.put(lastTerm + "," + term.text(), new Float(lastWeight.floatValue() * 0.25));
                } else {
                    bigramWeights.put(lastTerm + "," + term.text(), new Float(weight.floatValue() * 0.25));
                }
            }
            //last
            lastTerm = term;
            lastWeight = weight;
        } else {
            //TODO: handle the other types
            throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
                    "Unhandled query type: " + clause.getClass().getName());
        }
    }

}

From source file:org.alfresco.solr.query.Solr4QueryParserTest.java

License:Open Source License

@Test
public void testFlatQueryShouldBeGeneratedFromSequentiallyShiftedTokens() throws Exception {
    // prepare test data
    LinkedList<PackedTokenAttributeImpl> tokenSequenceWithRepeatedGroup = new LinkedList<PackedTokenAttributeImpl>();
    tokenSequenceWithRepeatedGroup.add(getTokenAttribute(TEST_QUERY.substring(0, 4), 0, 4));
    tokenSequenceWithRepeatedGroup.add(getTokenAttribute(TEST_QUERY.substring(5, 6), 5, 6));
    tokenSequenceWithRepeatedGroup.add(getTokenAttribute(TEST_QUERY.substring(6, 10), 6, 10));
    tokenSequenceWithRepeatedGroup.add(getTokenAttribute(TEST_QUERY.substring(10, 11), 10, 11));

    assertTrue("All tokens in test data must be sequentially shifted",
            parser.isAllTokensSequentiallyShifted(tokenSequenceWithRepeatedGroup));
    assertTrue(parser.getEnablePositionIncrements());

    LinkedList<LinkedList<PackedTokenAttributeImpl>> fixedTokenSequences = new LinkedList<LinkedList<PackedTokenAttributeImpl>>();
    fixedTokenSequences.add(tokenSequenceWithRepeatedGroup);

    // call method to test
    SpanQuery q = parser.generateSpanOrQuery(TEST_FIELD, fixedTokenSequences);

    // check results
    assertNotNull(q);//from  w w w. ja  va2 s .co  m
    assertTrue(q instanceof SpanNearQuery);
    SpanNearQuery spanNearQuery = (SpanNearQuery) q;
    assertEquals("Slop between term must be 0", 0, spanNearQuery.getSlop());
    assertTrue("Terms must be in order", spanNearQuery.isInOrder());

    SpanQuery[] termClauses = spanNearQuery.getClauses();
    assertEquals("Flat query must be generated (Query: " + q + ")", tokenSequenceWithRepeatedGroup.size(),
            termClauses.length);
    for (int i = 0; i < termClauses.length; i++) {
        assertTrue(termClauses[i] instanceof SpanTermQuery);
        assertEquals("All tokens must become spanQuery terms", tokenSequenceWithRepeatedGroup.get(i).toString(),
                ((SpanTermQuery) termClauses[i]).getTerm().text());
    }
}

From source file:org.apache.solr.search.TestSolrCoreParser.java

License:Apache License

private static void checkApacheLuceneSolr(Query query, String fieldName) {
    assertTrue(query instanceof SpanNearQuery);
    final SpanNearQuery snq = (SpanNearQuery) query;
    assertEquals(fieldName, snq.getField());
    assertEquals(42, snq.getSlop());//from   w ww.  j  a v a 2 s.com
    assertFalse(snq.isInOrder());
    assertEquals(3, snq.getClauses().length);
    assertTrue(snq.getClauses()[0] instanceof SpanTermQuery);
    assertTrue(snq.getClauses()[1] instanceof SpanTermQuery);
    assertTrue(snq.getClauses()[2] instanceof SpanTermQuery);
}

From source file:org.elasticsearch.index.query.json.SimpleJsonIndexQueryParserTests.java

License:Apache License

@Test
public void testSpanNearQueryBuilder() throws IOException {
    IndexQueryParser queryParser = newQueryParser();
    Query parsedQuery = queryParser
            .parse(spanNearQuery().clause(spanTermQuery("age", 34)).clause(spanTermQuery("age", 35))
                    .clause(spanTermQuery("age", 36)).slop(12).inOrder(false).collectPayloads(false));
    assertThat(parsedQuery, instanceOf(SpanNearQuery.class));
    SpanNearQuery spanNearQuery = (SpanNearQuery) parsedQuery;
    assertThat(spanNearQuery.getClauses().length, equalTo(3));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[0]).getTerm(),
            equalTo(new Term("age", NumericUtils.longToPrefixCoded(34))));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[1]).getTerm(),
            equalTo(new Term("age", NumericUtils.longToPrefixCoded(35))));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[2]).getTerm(),
            equalTo(new Term("age", NumericUtils.longToPrefixCoded(36))));
    assertThat(spanNearQuery.isInOrder(), equalTo(false));
}

From source file:org.elasticsearch.index.query.json.SimpleJsonIndexQueryParserTests.java

License:Apache License

@Test
public void testSpanNearQuery() throws IOException {
    IndexQueryParser queryParser = newQueryParser();
    String query = copyToStringFromClasspath("/org/elasticsearch/index/query/json/spanNear.json");
    Query parsedQuery = queryParser.parse(query);
    assertThat(parsedQuery, instanceOf(SpanNearQuery.class));
    SpanNearQuery spanNearQuery = (SpanNearQuery) parsedQuery;
    assertThat(spanNearQuery.getClauses().length, equalTo(3));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[0]).getTerm(),
            equalTo(new Term("age", NumericUtils.longToPrefixCoded(34))));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[1]).getTerm(),
            equalTo(new Term("age", NumericUtils.longToPrefixCoded(35))));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[2]).getTerm(),
            equalTo(new Term("age", NumericUtils.longToPrefixCoded(36))));
    assertThat(spanNearQuery.isInOrder(), equalTo(false));
}

From source file:org.elasticsearch.index.query.SimpleIndexQueryParserTests.java

License:Apache License

@Test
public void testSpanNearQueryBuilder() throws IOException {
    IndexQueryParserService queryParser = queryParser();
    Query parsedQuery = queryParser
            .parse(spanNearQuery().clause(spanTermQuery("age", 34)).clause(spanTermQuery("age", 35))
                    .clause(spanTermQuery("age", 36)).slop(12).inOrder(false).collectPayloads(false))
            .query();/* w w  w  .  j a v  a2  s .  c o  m*/
    assertThat(parsedQuery, instanceOf(SpanNearQuery.class));
    SpanNearQuery spanNearQuery = (SpanNearQuery) parsedQuery;
    assertThat(spanNearQuery.getClauses().length, equalTo(3));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[0]).getTerm(),
            equalTo(new Term("age", longToPrefixCoded(34, 0))));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[1]).getTerm(),
            equalTo(new Term("age", longToPrefixCoded(35, 0))));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[2]).getTerm(),
            equalTo(new Term("age", longToPrefixCoded(36, 0))));
    assertThat(spanNearQuery.isInOrder(), equalTo(false));
}

From source file:org.elasticsearch.index.query.SimpleIndexQueryParserTests.java

License:Apache License

@Test
public void testSpanNearQuery() throws IOException {
    IndexQueryParserService queryParser = queryParser();
    String query = copyToStringFromClasspath("/org/elasticsearch/index/query/spanNear.json");
    Query parsedQuery = queryParser.parse(query).query();
    assertThat(parsedQuery, instanceOf(SpanNearQuery.class));
    SpanNearQuery spanNearQuery = (SpanNearQuery) parsedQuery;
    assertThat(spanNearQuery.getClauses().length, equalTo(3));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[0]).getTerm(),
            equalTo(new Term("age", longToPrefixCoded(34, 0))));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[1]).getTerm(),
            equalTo(new Term("age", longToPrefixCoded(35, 0))));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[2]).getTerm(),
            equalTo(new Term("age", longToPrefixCoded(36, 0))));
    assertThat(spanNearQuery.isInOrder(), equalTo(false));
}

From source file:org.elasticsearch.index.query.SimpleIndexQueryParserTests.java

License:Apache License

@Test
public void testFieldMaskingSpanQuery() throws IOException {
    IndexQueryParserService queryParser = queryParser();
    String query = copyToStringFromClasspath("/org/elasticsearch/index/query/spanFieldMaskingTerm.json");
    Query parsedQuery = queryParser.parse(query).query();
    assertThat(parsedQuery, instanceOf(SpanNearQuery.class));
    SpanNearQuery spanNearQuery = (SpanNearQuery) parsedQuery;
    assertThat(spanNearQuery.getClauses().length, equalTo(3));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[0]).getTerm(),
            equalTo(new Term("age", longToPrefixCoded(34, 0))));
    assertThat(((SpanTermQuery) spanNearQuery.getClauses()[1]).getTerm(),
            equalTo(new Term("age", longToPrefixCoded(35, 0))));
    assertThat(((SpanTermQuery) ((FieldMaskingSpanQuery) spanNearQuery.getClauses()[2]).getMaskedQuery())
            .getTerm(), equalTo(new Term("age_1", "36")));
    assertThat(spanNearQuery.isInOrder(), equalTo(false));
}

From source file:org.elasticsearch.index.query.SpanGapQueryBuilderTests.java

License:Apache License

@Override
protected void doAssertLuceneQuery(SpanNearQueryBuilder queryBuilder, Query query, SearchContext context)
        throws IOException {
    assertThat(query, either(instanceOf(SpanNearQuery.class)).or(instanceOf(SpanTermQuery.class))
            .or(instanceOf(SpanBoostQuery.class)).or(instanceOf(MatchAllQueryBuilder.class)));
    if (query instanceof SpanNearQuery) {
        SpanNearQuery spanNearQuery = (SpanNearQuery) query;
        assertThat(spanNearQuery.getSlop(), equalTo(queryBuilder.slop()));
        assertThat(spanNearQuery.isInOrder(), equalTo(queryBuilder.inOrder()));
        assertThat(spanNearQuery.getClauses().length, equalTo(queryBuilder.clauses().size()));
        Iterator<SpanQueryBuilder> spanQueryBuilderIterator = queryBuilder.clauses().iterator();
        for (SpanQuery spanQuery : spanNearQuery.getClauses()) {
            SpanQueryBuilder spanQB = spanQueryBuilderIterator.next();
            if (spanQB instanceof SpanGapQueryBuilder)
                continue;
            assertThat(spanQuery, equalTo(spanQB.toQuery(context.getQueryShardContext())));
        }/*from  w w  w  . j  a  v a  2 s .c  om*/
    } else if (query instanceof SpanTermQuery || query instanceof SpanBoostQuery) {
        assertThat(queryBuilder.clauses().size(), equalTo(1));
        assertThat(query, equalTo(queryBuilder.clauses().get(0).toQuery(context.getQueryShardContext())));
    }
}

From source file:org.elasticsearch.index.query.SpanNearQueryBuilderTests.java

License:Apache License

@Override
protected void doAssertLuceneQuery(SpanNearQueryBuilder queryBuilder, Query query, QueryShardContext context)
        throws IOException {
    assertThat(query, instanceOf(SpanNearQuery.class));
    SpanNearQuery spanNearQuery = (SpanNearQuery) query;
    assertThat(spanNearQuery.getSlop(), equalTo(queryBuilder.slop()));
    assertThat(spanNearQuery.isInOrder(), equalTo(queryBuilder.inOrder()));
    assertThat(spanNearQuery.getClauses().length, equalTo(queryBuilder.clauses().size()));
    Iterator<SpanQueryBuilder> spanQueryBuilderIterator = queryBuilder.clauses().iterator();
    for (SpanQuery spanQuery : spanNearQuery.getClauses()) {
        assertThat(spanQuery, equalTo(spanQueryBuilderIterator.next().toQuery(context)));
    }//from   w  ww  . jav a2 s  . c  o  m
}