通过前几篇《全文检索技术专栏》关于倒排索引算法的原理、Lucene分词、索引的创建等内容的介绍,Lucene中最重要也是最能体现Lucene作用的非搜索功能莫属。Lucene对创建的索引可实现多种搜索功能(词项查询、多域查询、布尔查询、范围查询、模糊查询、通配查询),在进行搜索时,将查询条件封装成query对象,最终得到多个document数据。
词项查询
词项查询是最基本的查询方式,查询参数就是一个域中的词语。判断倒排索引表中是否有相关词项,最终将document匹配集合返回。
@Test
public void termQuery() throws IOException {
//指定一个文件输出目录
Path path= Paths.get("d:/test/index");
//将路径交给FSDirectory完成路径的管理,当路径不存在时,由FSDirectory帮你创建
FSDirectory fsDirectory=FSDirectory.open(path);
//创建索引输入流
IndexReader indexReader= DirectoryReader.open(fsDirectory);
IndexSearcher indexSearcher=new IndexSearcher(indexReader);
//创建词项查询条件
Term term=new Term("title","巴西");
Query query= new TermQuery(term);