List of usage examples for org.apache.lucene.search.spans SpanNearQuery SpanNearQuery
public SpanNearQuery(SpanQuery[] clausesIn, int slop, boolean inOrder)
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); }