lucene支持十分丰富的查询,这里列写其中一些比较常用的查询的用法。
term查询、queryParser查询 ,booleanQuery
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;

public class Searcher {
  public static void termQuery() throws Exception {
    Directory directory = FSDirectory.getDirectory("./index", false);
    IndexSearcher searcher = new IndexSearcher(directory);
    Term t = new Term("body", "document");
    Query query = new TermQuery(t);
    Hits hits = searcher.search(query);
    System.out.println(hits.length());
  }

  public static void queryParser() throws Exception {
    Directory directory = FSDirectory.getDirectory("./index", false);
    IndexSearcher searcher = new IndexSearcher(directory);
    Query query = QueryParser.parse("text", "body", new StandardAnalyzer());
    Hits hits = searcher.search(query);
    System.out.println(hits.length());
  }

  public static void booleanQuery() throws Exception {
    Query parseQuery = QueryParser.parse("text", "body", new StandardAnalyzer());
    Term t = new Term("body", "document");
    Query termQuery = new TermQuery(t);
    BooleanQuery boolQuery = new BooleanQuery();
    boolQuery.add(parseQuery, true, false);
    boolQuery.add(termQuery, true, false);
    Directory directory = FSDirectory.getDirectory("./index", false);
    IndexSearcher searcher = new IndexSearcher(directory);
    Hits hits = searcher.search(boolQuery);
    System.out.println(hits.length());
  }

  public static void main(String[] args) throws Exception {
    termQuery();
    queryParser();
    booleanQuery();
  }
}
快乐渡过每一天,减肥坚持每一天