Search in sources :

Example 11 with MultiPhraseQuery

use of org.apache.lucene.search.MultiPhraseQuery in project lucene-solr by apache.

the class MultiFieldQueryParser method applySlop.

private Query applySlop(Query q, int slop) {
    if (q instanceof PhraseQuery) {
        PhraseQuery.Builder builder = new PhraseQuery.Builder();
        builder.setSlop(slop);
        PhraseQuery pq = (PhraseQuery) q;
        org.apache.lucene.index.Term[] terms = pq.getTerms();
        int[] positions = pq.getPositions();
        for (int i = 0; i < terms.length; ++i) {
            builder.add(terms[i], positions[i]);
        }
        q = builder.build();
    } else if (q instanceof MultiPhraseQuery) {
        MultiPhraseQuery mpq = (MultiPhraseQuery) q;
        if (slop != mpq.getSlop()) {
            q = new MultiPhraseQuery.Builder(mpq).setSlop(slop).build();
        }
    }
    return q;
}
Also used : MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) PhraseQuery(org.apache.lucene.search.PhraseQuery) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery)

Example 12 with MultiPhraseQuery

use of org.apache.lucene.search.MultiPhraseQuery in project lucene-solr by apache.

the class SynonymTokenizer method testHighlighterWithMultiPhraseQuery.

public void testHighlighterWithMultiPhraseQuery() throws IOException, InvalidTokenOffsetsException {
    final String fieldName = "substring";
    final MultiPhraseQuery mpq = new MultiPhraseQuery.Builder().add(new Term(fieldName, "uchu")).build();
    assertHighlighting(mpq, new SimpleHTMLFormatter("<b>", "</b>"), "Buchung", "B<b>uchu</b>ng", fieldName);
}
Also used : Builder(org.apache.lucene.search.PhraseQuery.Builder) DocumentBuilder(javax.xml.parsers.DocumentBuilder) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) Term(org.apache.lucene.index.Term)

Example 13 with MultiPhraseQuery

use of org.apache.lucene.search.MultiPhraseQuery in project lucene-solr by apache.

the class SynonymTokenizer method testQueryScorerMultiPhraseQueryHighlightingWithGap.

public void testQueryScorerMultiPhraseQueryHighlightingWithGap() throws Exception {
    MultiPhraseQuery.Builder mpqb = new MultiPhraseQuery.Builder();
    /*
     * The toString of MultiPhraseQuery doesn't work so well with these
     * out-of-order additions, but the Query itself seems to match accurately.
     */
    mpqb.add(new Term[] { new Term(FIELD_NAME, "wordz") }, 2);
    mpqb.add(new Term[] { new Term(FIELD_NAME, "wordx") }, 0);
    doSearching(mpqb.build());
    final int maxNumFragmentsRequired = 1;
    final int expectedHighlights = 2;
    assertExpectedHighlightCount(maxNumFragmentsRequired, expectedHighlights);
}
Also used : Builder(org.apache.lucene.search.PhraseQuery.Builder) DocumentBuilder(javax.xml.parsers.DocumentBuilder) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) Term(org.apache.lucene.index.Term) IntPoint(org.apache.lucene.document.IntPoint)

Example 14 with MultiPhraseQuery

use of org.apache.lucene.search.MultiPhraseQuery in project lucene-solr by apache.

the class SolrQueryParserBase method getFieldQuery.

/**
   * Base implementation delegates to {@link #getFieldQuery(String,String,boolean,boolean)}.
   * This method may be overridden, for example, to return
   * a SpanNearQuery instead of a PhraseQuery.
   *
   */
protected Query getFieldQuery(String field, String queryText, int slop) throws SyntaxError {
    Query query = getFieldQuery(field, queryText, true, false);
    // and not a sub-parser.
    if (subQParser == null) {
        if (query instanceof PhraseQuery) {
            PhraseQuery pq = (PhraseQuery) query;
            Term[] terms = pq.getTerms();
            int[] positions = pq.getPositions();
            PhraseQuery.Builder builder = new PhraseQuery.Builder();
            for (int i = 0; i < terms.length; ++i) {
                builder.add(terms[i], positions[i]);
            }
            builder.setSlop(slop);
            query = builder.build();
        } else if (query instanceof MultiPhraseQuery) {
            MultiPhraseQuery mpq = (MultiPhraseQuery) query;
            if (slop != mpq.getSlop()) {
                query = new MultiPhraseQuery.Builder(mpq).setSlop(slop).build();
            }
        }
    }
    return query;
}
Also used : Query(org.apache.lucene.search.Query) AutomatonQuery(org.apache.lucene.search.AutomatonQuery) SolrConstantScoreQuery(org.apache.solr.search.SolrConstantScoreQuery) PhraseQuery(org.apache.lucene.search.PhraseQuery) RegexpQuery(org.apache.lucene.search.RegexpQuery) MultiTermQuery(org.apache.lucene.search.MultiTermQuery) ConstantScoreQuery(org.apache.lucene.search.ConstantScoreQuery) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) FuzzyQuery(org.apache.lucene.search.FuzzyQuery) MatchAllDocsQuery(org.apache.lucene.search.MatchAllDocsQuery) WildcardQuery(org.apache.lucene.search.WildcardQuery) FilterQuery(org.apache.solr.query.FilterQuery) BooleanQuery(org.apache.lucene.search.BooleanQuery) BoostQuery(org.apache.lucene.search.BoostQuery) PhraseQuery(org.apache.lucene.search.PhraseQuery) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) QueryBuilder(org.apache.lucene.util.QueryBuilder) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) Term(org.apache.lucene.index.Term)

Example 15 with MultiPhraseQuery

use of org.apache.lucene.search.MultiPhraseQuery in project lucene-solr by apache.

the class TestMultiPhraseQueryParsing method testMultiPhraseQueryParsing.

public void testMultiPhraseQueryParsing() throws Exception {
    TokenAndPos[] INCR_0_QUERY_TOKENS_AND = new TokenAndPos[] { new TokenAndPos("a", 0), new TokenAndPos("1", 0), new TokenAndPos("b", 1), new TokenAndPos("1", 1), new TokenAndPos("c", 2) };
    QueryParser qp = new QueryParser("field", new CannedAnalyzer(INCR_0_QUERY_TOKENS_AND));
    Query q = qp.parse("\"this text is acually ignored\"");
    assertTrue("wrong query type!", q instanceof MultiPhraseQuery);
    MultiPhraseQuery.Builder multiPhraseQueryBuilder = new MultiPhraseQuery.Builder();
    multiPhraseQueryBuilder.add(new Term[] { new Term("field", "a"), new Term("field", "1") }, -1);
    multiPhraseQueryBuilder.add(new Term[] { new Term("field", "b"), new Term("field", "1") }, 0);
    multiPhraseQueryBuilder.add(new Term[] { new Term("field", "c") }, 1);
    assertEquals(multiPhraseQueryBuilder.build(), q);
}
Also used : Query(org.apache.lucene.search.Query) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) Term(org.apache.lucene.index.Term)

Aggregations

MultiPhraseQuery (org.apache.lucene.search.MultiPhraseQuery)18 Term (org.apache.lucene.index.Term)15 Query (org.apache.lucene.search.Query)8 PhraseQuery (org.apache.lucene.search.PhraseQuery)7 TermQuery (org.apache.lucene.search.TermQuery)7 BooleanQuery (org.apache.lucene.search.BooleanQuery)5 BoostQuery (org.apache.lucene.search.BoostQuery)5 ArrayList (java.util.ArrayList)4 ConstantScoreQuery (org.apache.lucene.search.ConstantScoreQuery)4 SpanTermQuery (org.apache.lucene.search.spans.SpanTermQuery)4 List (java.util.List)3 BooleanClause (org.apache.lucene.search.BooleanClause)3 MatchAllDocsQuery (org.apache.lucene.search.MatchAllDocsQuery)3 MultiTermQuery (org.apache.lucene.search.MultiTermQuery)3 SynonymQuery (org.apache.lucene.search.SynonymQuery)3 DocumentBuilder (javax.xml.parsers.DocumentBuilder)2 IndexReader (org.apache.lucene.index.IndexReader)2 BlendedTermQuery (org.apache.lucene.queries.BlendedTermQuery)2 BoostingQuery (org.apache.lucene.queries.BoostingQuery)2 QueryTreeBuilder (org.apache.lucene.queryparser.flexible.core.builders.QueryTreeBuilder)2