Lucene查询

查询简介

  • lucene的文档搜索条件通过Query对象完成
        IndexReader reader = DirectoryReader.open(FSDirectory.open(Paths.get("index")));
        IndexSearcher searcher = new IndexSearcher(reader);
        Query query = new TermQuery(new Term("name", "zby"));
        TopDocs topDocs = searcher.search(query, 100);
        System.out.println(topDocs.totalHits);
  • lucene提供了两种方式创建Query对象:API方式和解析表达式
  • API方式直接创建Query子类对象即可,如
Query query=new TermQuery(new Term("name", "zby"));
  • 解析表达式通过QueryParser完成,QueryParser是通过JavaCC生成,通过parse方法解析表达式生产Query对象,如
Analyzer analyzer=new StandardAnalyzer();
QueryParser parser = new QueryParser("name", analyzer);
Query query = parser.parse("zby");
  • API方式创建查询可以通过查看Query的类继承结构分析可用的查询方式,不过比较麻烦,没有系统文档说明
  • 解析表达式和API方式实际上是殊途同归,可以互相转换的,并且解析表达式官方有详细文档,掌握了解析表达式也就掌握可API,因此重点看如何通过解析表达式创建Query对象

QueryParser

  • A simple query parser implemented with JavaCC.

  • 官方文档

JavaCC

原文地址:https://www.cnblogs.com/zby9527/p/13637517.html