Example usage for org.apache.lucene.search TermQuery getTerm

List of usage examples for org.apache.lucene.search TermQuery getTerm

Introduction

In this page you can find the example usage for org.apache.lucene.search TermQuery getTerm.

Prototype

public Term getTerm() 

Source Link

Document

Returns the term of this query.

Usage

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"));
}