List of usage examples for org.apache.lucene.search.spans SpanNearQuery getClauses
public SpanQuery[] getClauses()
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 }