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

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

Introduction

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

Prototype

public SpanNearQuery(SpanQuery[] clausesIn, int slop, boolean inOrder) 

Source Link

Document

Construct a SpanNearQuery.

Usage

From source file:aos.lucene.search.advanced.SpanQueryTest.java

License:Apache License

public void testSpanNearQuery() throws Exception {
      SpanQuery[] quick_brown_dog = new SpanQuery[] { quick, brown, dog };
      SpanNearQuery snq = new SpanNearQuery(quick_brown_dog, 0, true); //
      assertNoMatches(snq);/*  w  w  w  .j  a  v  a 2 s.c o  m*/
      dumpSpans(snq);

      snq = new SpanNearQuery(quick_brown_dog, 4, true); //
      assertNoMatches(snq);
      dumpSpans(snq);

      snq = new SpanNearQuery(quick_brown_dog, 5, true); //
      assertOnlyBrownFox(snq);
      dumpSpans(snq);

      // interesting - even a sloppy phrase query would require
      // more slop to match
      snq = new SpanNearQuery(new SpanQuery[] { lazy, fox }, 3, false);// #4
      assertOnlyBrownFox(snq);
      dumpSpans(snq);

      PhraseQuery pq = new PhraseQuery(); //
      pq.add(new Term("f", "lazy")); //
      pq.add(new Term("f", "fox")); //
      pq.setSlop(4); //
      assertNoMatches(pq);

      pq.setSlop(5); //
      assertOnlyBrownFox(pq); //
  }

From source file:aos.lucene.search.advanced.SpanQueryTest.java

License:Apache License

public void testSpanQueryFilter() throws Exception {
      SpanQuery[] quick_brown_dog = new SpanQuery[] { quick, brown, dog };
      SpanQuery snq = new SpanNearQuery(quick_brown_dog, 5, true);
      Filter filter = new SpanQueryFilter(snq);

      Query query = new MatchAllDocsQuery();
      TopDocs hits = searcher.search(query, filter, 10);
      assertEquals(1, hits.totalHits);/*from   ww w.  j  a  v  a2 s.co  m*/
      assertEquals("wrong doc", 0, hits.scoreDocs[0].doc);
  }

From source file:aos.lucene.search.advanced.SpanQueryTest.java

License:Apache License

public void testSpanNotQuery() throws Exception {
      SpanNearQuery quick_fox = new SpanNearQuery(new SpanQuery[] { quick, fox }, 1, true);
      assertBothFoxes(quick_fox);/*from w w  w .  java 2 s .  c om*/
      dumpSpans(quick_fox);

      SpanNotQuery quick_fox_dog = new SpanNotQuery(quick_fox, dog);
      assertBothFoxes(quick_fox_dog);
      dumpSpans(quick_fox_dog);

      SpanNotQuery no_quick_red_fox = new SpanNotQuery(quick_fox, red);
      assertOnlyBrownFox(no_quick_red_fox);
      dumpSpans(no_quick_red_fox);
  }

From source file:aos.lucene.search.advanced.SpanQueryTest.java

License:Apache License

public void testSpanOrQuery() throws Exception {
      SpanNearQuery quick_fox = new SpanNearQuery(new SpanQuery[] { quick, fox }, 1, true);

      SpanNearQuery lazy_dog = new SpanNearQuery(new SpanQuery[] { lazy, dog }, 0, true);

      SpanNearQuery sleepy_cat = new SpanNearQuery(new SpanQuery[] { sleepy, cat }, 0, true);

      SpanNearQuery qf_near_ld = new SpanNearQuery(new SpanQuery[] { quick_fox, lazy_dog }, 3, true);
      assertOnlyBrownFox(qf_near_ld);/*from  w ww .  j av  a 2 s  .  c o  m*/
      dumpSpans(qf_near_ld);

      SpanNearQuery qf_near_sc = new SpanNearQuery(new SpanQuery[] { quick_fox, sleepy_cat }, 3, true);
      dumpSpans(qf_near_sc);

      SpanOrQuery or = new SpanOrQuery(new SpanQuery[] { qf_near_ld, qf_near_sc });
      assertBothFoxes(or);
      dumpSpans(or);
  }

From source file:aos.lucene.search.advanced.SpanQueryTest.java

License:Apache License

public void testPlay() throws Exception {
      SpanOrQuery or = new SpanOrQuery(new SpanQuery[] { quick, fox });
      dumpSpans(or);//from  w  w  w  . j  av a  2s.com

      SpanNearQuery quick_fox = new SpanNearQuery(new SpanQuery[] { quick, fox }, 1, true);
      SpanFirstQuery sfq = new SpanFirstQuery(quick_fox, 4);
      dumpSpans(sfq);

      dumpSpans(new SpanTermQuery(new Term("f", "the")));

      SpanNearQuery quick_brown = new SpanNearQuery(new SpanQuery[] { quick, brown }, 0, false);
      dumpSpans(quick_brown);

  }

From source file:aos.lucene.search.ext.queryparser.CustomQueryParser.java

License:Apache License

/**
 * Replace PhraseQuery with SpanNearQuery to force in-order
 * phrase matching rather than reverse.//from  w w  w  .  j  a v a2  s  .  co  m
 */
protected Query getFieldQuery(String field, String queryText, int slop) throws ParseException {
    Query orig = super.getFieldQuery(field, queryText, slop); //

    if (!(orig instanceof PhraseQuery)) { //
        return orig; //
    } //

    PhraseQuery pq = (PhraseQuery) orig;
    Term[] terms = pq.getTerms(); //
    SpanTermQuery[] clauses = new SpanTermQuery[terms.length];
    for (int i = 0; i < terms.length; i++) {
        clauses[i] = new SpanTermQuery(terms[i]);
    }

    SpanNearQuery query = new SpanNearQuery( //
            clauses, slop, true); //

    return query;
}

From source file:com.ibm.watson.developer_cloud.professor_languo.pipeline.primary_search.SpanQueryGenerator.java

License:Open Source License

private Query createNgramQueryRecursive(Question question, Analyzer analyzer, int n) throws SearchException {
    List<String> tokens;
    StackExchangeQuestion queryQuestion = (StackExchangeQuestion) question;
    String title = queryQuestion.getTitleText();
    List<SpanTermQuery> termQueries = new ArrayList<SpanTermQuery>();
    BooleanQuery query = new BooleanQuery();

    try {/*from   w w w  .  ja  v  a2  s .  co m*/
        tokens = AnalyzerUtils.collectTokens(analyzer, title);
        // Loop through all tokens
        for (int idx = 0; idx < tokens.size() - (n - 1); idx++) {
            // For each field to search for
            for (int fieldIdx = 0; fieldIdx < fieldsToSearch.length; fieldIdx++) {
                // Make n-gram term query
                for (int t = 0; t < n; t++) {
                    SpanTermQuery stq = new SpanTermQuery(
                            new Term(fieldsToSearch[fieldIdx], tokens.get(idx + t).trim()));
                    stq.setBoost((float) (boostValues[fieldIdx] / 2.0));
                    termQueries.add(stq);
                }
                SpanNearQuery spanTitleQuery = new SpanNearQuery(
                        (SpanTermQuery[]) termQueries.toArray(new SpanTermQuery[termQueries.size()]),
                        fuzzFactor, inOrder);
                query.add(spanTitleQuery, Occur.SHOULD);
                termQueries.clear();
            } // Repeat for every field in fieldsToSearch
        } // Repeat for each token
    } catch (IOException e) {
        throw new SearchException(e);
    }

    return query;
}

From source file:com.leavesfly.lia.advsearching.SpanQueryTest.java

License:Apache License

public void testSpanNearQuery() throws Exception {
    SpanQuery[] quick_brown_dog = new SpanQuery[] { quick, brown, dog };
    SpanNearQuery snq = new SpanNearQuery(quick_brown_dog, 0, true); // #1
    assertNoMatches(snq);//www  . j  ava  2 s .  c  o  m
    dumpSpans(snq);

    snq = new SpanNearQuery(quick_brown_dog, 4, true); // #2
    assertNoMatches(snq);
    dumpSpans(snq);

    snq = new SpanNearQuery(quick_brown_dog, 5, true); // #3
    assertOnlyBrownFox(snq);
    dumpSpans(snq);

    // interesting - even a sloppy phrase query would require
    // more slop to match
    snq = new SpanNearQuery(new SpanQuery[] { lazy, fox }, 3, false);// #4
    assertOnlyBrownFox(snq);
    dumpSpans(snq);

    PhraseQuery pq = new PhraseQuery(); // #5
    pq.add(new Term("f", "lazy")); // #5
    pq.add(new Term("f", "fox")); // #5
    pq.setSlop(4); // #5
    assertNoMatches(pq);

    pq.setSlop(5); // #6
    assertOnlyBrownFox(pq); // #6
}

From source file:com.leavesfly.lia.advsearching.SpanQueryTest.java

License:Apache License

public void testSpanQueryFilter() throws Exception {
    SpanQuery[] quick_brown_dog = new SpanQuery[] { quick, brown, dog };
    SpanQuery snq = new SpanNearQuery(quick_brown_dog, 5, true);
    Filter filter = new SpanQueryFilter(snq);

    Query query = new MatchAllDocsQuery();
    TopDocs hits = searcher.search(query, filter, 10);
    assertEquals(1, hits.totalHits);//w  ww.  j  a va  2 s.co m
    assertEquals("wrong doc", 0, hits.scoreDocs[0].doc);
}

From source file:com.leavesfly.lia.advsearching.SpanQueryTest.java

License:Apache License

public void testSpanNotQuery() throws Exception {
    SpanNearQuery quick_fox = new SpanNearQuery(new SpanQuery[] { quick, fox }, 1, true);
    assertBothFoxes(quick_fox);//from   w  w  w  . j a v  a  2s .  c om
    dumpSpans(quick_fox);

    SpanNotQuery quick_fox_dog = new SpanNotQuery(quick_fox, dog);
    assertBothFoxes(quick_fox_dog);
    dumpSpans(quick_fox_dog);

    SpanNotQuery no_quick_red_fox = new SpanNotQuery(quick_fox, red);
    assertOnlyBrownFox(no_quick_red_fox);
    dumpSpans(no_quick_red_fox);
}