List of usage examples for org.apache.lucene.search TermQuery getTerm
public Term getTerm()
From source file:ai.castor.idf.FetchTermIDF.java
License:Apache License
public double getTermIDF(String term) throws ParseException { Analyzer analyzer = new EnglishAnalyzer(CharArraySet.EMPTY_SET); QueryParser qp = new QueryParser(FIELD_BODY, analyzer); ClassicSimilarity similarity = new ClassicSimilarity(); String esTerm = qp.escape(term); double termIDF = 0.0; try {//from www . j av a2 s . c o m TermQuery q = (TermQuery) qp.parse(esTerm); Term t = q.getTerm(); termIDF = similarity.idf(reader.docFreq(t), reader.numDocs()); System.out.println(term + '\t' + esTerm + '\t' + q + '\t' + t + '\t' + termIDF); } catch (Exception e) { System.err.println("Exception in fetching IDF(" + term + "): " + e.toString()); } return termIDF; }
From source file:ai.castor.idf.IDFScorer.java
License:Apache License
public double calcIDF(String query, String answer, boolean analyze) throws ParseException { Analyzer analyzer;//from www . j a v a2s . c o m if (analyze) { analyzer = new EnglishAnalyzer(StopFilter.makeStopSet(stopWords)); } else { analyzer = new WhitespaceAnalyzer(); } QueryParser qp = new QueryParser(FIELD_BODY, analyzer); ClassicSimilarity similarity = new ClassicSimilarity(); String escapedQuery = qp.escape(query); Query question = qp.parse(escapedQuery); HashSet<String> questionTerms = new HashSet<>(Arrays.asList(question.toString().trim().split("\\s+"))); double idf = 0.0; HashSet<String> seenTerms = new HashSet<>(); String[] terms = answer.split("\\s+"); for (String term : terms) { try { TermQuery q = (TermQuery) qp.parse(term); Term t = q.getTerm(); if (questionTerms.contains(t.toString()) && !seenTerms.contains(t.toString())) { idf += similarity.idf(reader.docFreq(t), reader.numDocs()); seenTerms.add(t.toString()); } else { idf += 0.0; } } catch (Exception e) { continue; } } return idf; }
From source file:bbejeck.nosql.lucene.LuceneQueryParsingTest.java
License:Apache License
@Test public void test_parse_term_and_phrase_query() { String query = "Select name,address from '/path/to/index/' where first_name='Beth' and last_name='Bejeck' or type='Big Cutie '"; BooleanQuery booleanQuery = parseQuery(query); BooleanClause[] clauses = booleanQuery.getClauses(); assertThat(clauses.length, is(3));/*w ww . j ava 2 s .c o m*/ assertThat(clauses[0].getOccur(), is(BooleanClause.Occur.MUST)); assertThat(clauses[1].getOccur(), is(BooleanClause.Occur.MUST)); assertThat(clauses[2].getOccur(), is(BooleanClause.Occur.SHOULD)); TermQuery termQuery = (TermQuery) clauses[0].getQuery(); assertThat(termQuery.getTerm().field(), is("first_name")); assertThat(termQuery.getTerm().text(), is("beth")); termQuery = (TermQuery) clauses[1].getQuery(); assertThat(termQuery.getTerm().field(), is("last_name")); assertThat(termQuery.getTerm().text(), is("bejeck")); assertThat(clauses[2].getQuery().getClass().isAssignableFrom(PhraseQuery.class), is(true)); assertThat(clauses[2].getOccur(), is(BooleanClause.Occur.SHOULD)); PhraseQuery phraseQuery = (PhraseQuery) clauses[2].getQuery(); assertArrayEquals(phraseQuery.getTerms(), new Term[] { new Term("type", "big"), new Term("type", "cutie") }); }
From source file:bbejeck.nosql.lucene.LuceneQueryParsingTest.java
License:Apache License
@Test public void test_parse_term_correctly() { String query = "select foo from '/path/index/' where foo='Na,ME'"; BooleanQuery bq = parseQuery(query); BooleanClause[] clauses = bq.getClauses(); TermQuery termQuery = (TermQuery) clauses[0].getQuery(); assertThat(termQuery.getTerm().field(), is("foo")); assertThat(termQuery.getTerm().text(), is("name")); }
From source file:bbejeck.nosql.lucene.LuceneQueryParsingTest.java
License:Apache License
@Test public void test_parse_with_no_leading_slash() { String query = "select foo from 'path/index/' where foo='Na,ME'"; BooleanQuery bq = parseQuery(query); BooleanClause[] clauses = bq.getClauses(); TermQuery termQuery = (TermQuery) clauses[0].getQuery(); assertThat(termQuery.getTerm().field(), is("foo")); assertThat(termQuery.getTerm().text(), is("name")); }
From source file:bbejeck.nosql.lucene.LuceneQueryParsingTest.java
License:Apache License
@Test public void test_parse_in_listquery() throws Exception { String query = "select foo from '/path/index/' where name='Beth' and score in (0, 50, 55)"; QueryParseResults qc = parseQueryAndFilter(query); BooleanClause[] clauses = qc.getBooleanQuery().getClauses(); assertThat(clauses.length, is(2));//from w w w. j a v a2 s . c om TermQuery termQuery = (TermQuery) clauses[0].getQuery(); assertThat(termQuery.getTerm().field(), is("name")); assertThat(termQuery.getTerm().text(), is("beth")); BooleanQuery booleanQuery = (BooleanQuery) clauses[1].getQuery(); assertThat(booleanQuery.clauses().size(), is(3)); clauses = booleanQuery.getClauses(); TermQuery termQuery1 = (TermQuery) clauses[0].getQuery(); assertThat(termQuery1.getTerm().field(), is("score")); assertThat(termQuery1.getTerm().text(), is("0")); TermQuery termQuery2 = (TermQuery) clauses[1].getQuery(); assertThat(termQuery2.getTerm().field(), is("score")); assertThat(termQuery2.getTerm().text(), is("50")); TermQuery termQuery3 = (TermQuery) clauses[2].getQuery(); assertThat(termQuery3.getTerm().field(), is("score")); assertThat(termQuery3.getTerm().text(), is("55")); }
From source file:bbejeck.nosql.lucene.LuceneQueryParsingTest.java
License:Apache License
@Test public void test_parse_in_term_listquery() throws Exception { String query = "select foo from '/path/index/' where name='Beth' and score in ('0', '50', '55')"; QueryParseResults qc = parseQueryAndFilter(query); BooleanClause[] clauses = qc.getBooleanQuery().getClauses(); assertThat(clauses.length, is(2));// w w w . j av a 2s . c o m TermQuery termQuery = (TermQuery) clauses[0].getQuery(); assertThat(termQuery.getTerm().field(), is("name")); assertThat(termQuery.getTerm().text(), is("beth")); BooleanQuery booleanQuery = (BooleanQuery) clauses[1].getQuery(); assertThat(booleanQuery.clauses().size(), is(3)); clauses = booleanQuery.getClauses(); TermQuery termQuery1 = (TermQuery) clauses[0].getQuery(); assertThat(termQuery1.getTerm().field(), is("score")); assertThat(termQuery1.getTerm().text(), is("0")); TermQuery termQuery2 = (TermQuery) clauses[1].getQuery(); assertThat(termQuery2.getTerm().field(), is("score")); assertThat(termQuery2.getTerm().text(), is("50")); TermQuery termQuery3 = (TermQuery) clauses[2].getQuery(); assertThat(termQuery3.getTerm().field(), is("score")); assertThat(termQuery3.getTerm().text(), is("55")); }
From source file:bbejeck.nosql.lucene.LuceneQueryParsingTest.java
License:Apache License
@Test public void test_parse_nested_query() throws Exception { String query = "select foo from 'D:/some/path/' where a='1' and (b='2' and c='3' and d='4')"; QueryParseResults qc = parseQueryAndFilter(query); BooleanClause[] clauses = qc.getBooleanQuery().getClauses(); assertThat(clauses.length, is(2));// w ww. j ava2s. c o m TermQuery termQuery = (TermQuery) clauses[0].getQuery(); assertThat(termQuery.getTerm().field(), is("a")); assertThat(termQuery.getTerm().text(), is("1")); BooleanQuery booleanQuery = (BooleanQuery) clauses[1].getQuery(); assertThat(booleanQuery.clauses().size(), is(3)); clauses = booleanQuery.getClauses(); TermQuery termQuery1 = (TermQuery) clauses[0].getQuery(); assertThat(termQuery1.getTerm().field(), is("b")); assertThat(termQuery1.getTerm().text(), is("2")); TermQuery termQuery2 = (TermQuery) clauses[1].getQuery(); assertThat(termQuery2.getTerm().field(), is("c")); assertThat(termQuery2.getTerm().text(), is("3")); TermQuery termQuery3 = (TermQuery) clauses[2].getQuery(); assertThat(termQuery3.getTerm().field(), is("d")); assertThat(termQuery3.getTerm().text(), is("4")); }
From source file:bbejeck.nosql.lucene.LuceneQueryParsingTest.java
License:Apache License
@Test public void test_parse_deeper_nested_query() throws Exception { String query = "select foo from '/some/path/' where a='1' and (b='2' and (c='3' and (d='4' and e='5')))"; QueryParseResults qc = parseQueryAndFilter(query); //Overall query BooleanClause[] clauses = qc.getBooleanQuery().getClauses(); assertThat(clauses.length, is(2));//from w w w. ja v a 2s .c o m TermQuery termQuery = (TermQuery) clauses[0].getQuery(); assertThat(termQuery.getTerm().field(), is("a")); assertThat(termQuery.getTerm().text(), is("1")); BooleanQuery booleanQuery = (BooleanQuery) clauses[1].getQuery(); assertThat(booleanQuery.clauses().size(), is(2)); //First nesting clauses = booleanQuery.getClauses(); TermQuery termQuery1 = (TermQuery) clauses[0].getQuery(); assertThat(termQuery1.getTerm().field(), is("b")); assertThat(termQuery1.getTerm().text(), is("2")); BooleanQuery booleanQuery1 = (BooleanQuery) clauses[1].getQuery(); assertThat(booleanQuery1.clauses().size(), is(2)); //Second nesting clauses = booleanQuery1.getClauses(); TermQuery termQuery2 = (TermQuery) clauses[0].getQuery(); assertThat(termQuery2.getTerm().field(), is("c")); assertThat(termQuery2.getTerm().text(), is("3")); BooleanQuery booleanQuery2 = (BooleanQuery) clauses[1].getQuery(); assertThat(booleanQuery2.clauses().size(), is(2)); //Third nesting clauses = booleanQuery2.getClauses(); TermQuery termQuery3 = (TermQuery) clauses[0].getQuery(); assertThat(termQuery3.getTerm().field(), is("d")); assertThat(termQuery3.getTerm().text(), is("4")); TermQuery termQuery4 = (TermQuery) clauses[1].getQuery(); assertThat(termQuery4.getTerm().field(), is("e")); assertThat(termQuery4.getTerm().text(), is("5")); }
From source file:bbejeck.nosql.lucene.LuceneQueryParsingTest.java
License:Apache License
@Test public void test_parse_deeper_nested_with_in_term_clause_query() throws Exception { String query = "select foo from '/some/path/' where a='1' and (b='2' and (c='3' and (d='4' and e in (5,6,7))))"; QueryParseResults qc = parseQueryAndFilter(query); //Overall query BooleanClause[] clauses = qc.getBooleanQuery().getClauses(); assertThat(clauses.length, is(2));//ww w. j ava2 s . c o m TermQuery termQuery = (TermQuery) clauses[0].getQuery(); assertThat(termQuery.getTerm().field(), is("a")); assertThat(termQuery.getTerm().text(), is("1")); BooleanQuery booleanQuery = (BooleanQuery) clauses[1].getQuery(); assertThat(booleanQuery.clauses().size(), is(2)); //First nesting clauses = booleanQuery.getClauses(); TermQuery termQuery1 = (TermQuery) clauses[0].getQuery(); assertThat(termQuery1.getTerm().field(), is("b")); assertThat(termQuery1.getTerm().text(), is("2")); BooleanQuery booleanQuery1 = (BooleanQuery) clauses[1].getQuery(); assertThat(booleanQuery1.clauses().size(), is(2)); //Second nesting clauses = booleanQuery1.getClauses(); TermQuery termQuery2 = (TermQuery) clauses[0].getQuery(); assertThat(termQuery2.getTerm().field(), is("c")); assertThat(termQuery2.getTerm().text(), is("3")); BooleanQuery booleanQuery2 = (BooleanQuery) clauses[1].getQuery(); assertThat(booleanQuery2.clauses().size(), is(2)); //Third nesting clauses = booleanQuery2.getClauses(); TermQuery termQuery3 = (TermQuery) clauses[0].getQuery(); assertThat(termQuery3.getTerm().field(), is("d")); assertThat(termQuery3.getTerm().text(), is("4")); BooleanQuery booleanQuery3 = (BooleanQuery) clauses[1].getQuery(); assertThat(booleanQuery3.clauses().size(), is(3)); clauses = booleanQuery3.getClauses(); TermQuery termQuery4 = (TermQuery) clauses[0].getQuery(); assertThat(termQuery4.getTerm().field(), is("e")); assertThat(termQuery4.getTerm().text(), is("5")); TermQuery termQuery5 = (TermQuery) clauses[1].getQuery(); assertThat(termQuery5.getTerm().field(), is("e")); assertThat(termQuery5.getTerm().text(), is("6")); TermQuery termQuery6 = (TermQuery) clauses[2].getQuery(); assertThat(termQuery6.getTerm().field(), is("e")); assertThat(termQuery6.getTerm().text(), is("7")); }