lucene使用总结

2017-05-30  本文已影响0人  code_plus

Lucene

基本概念

Lucene在对信息索引时,有一些基本的抽象概念。

  1. Document是搜索的基本单元,相当于关系型数据库的一行。
  2. Field是document的组成部分,相当于关系型数据库的列。
  3. Query是基本的查询,包括指定的field和需要查询的词

在一次普通的查询中,query是针对某个field的查询,查询结果包括包含这个field同时满足查询词要求的document。

查询类型

项查询

TermQuery是最基本的查询,构造时需要提供查询的field和查询词。

Term t = new Term("title","java");
Query query = new TermQuery(t);

范围查询

TermRangeQuery和NumericRangeQuery表示范围查询,前者主要是基于英文字母的field,后者主要是基于数字类型的field。

字符串查询

PrefixQuery 字符串前缀搜索

Term t = new Term("category","/technology/computers/programming");
PrefixQuery query = new PrefixQuery(t);

组合查询

BooleanQuery,布尔查询可以将基本的查询通过布尔关系:与、或和非,组合起来进行查询,而且布尔查询支持嵌套。

短语查询

PhraseQuery, 按照短语进行查询,可以设置短语的“距离”,用slop表示,默认为0

PhraseQuery query = new PhraseQuery();
query.setSlop(0);
query.add(new Term("field", "word"))
...

通配符查询

WildcardQuery,支持*和?两种通配符。

模糊搜索

FuzzyQuery基于编辑距离计算term的相似性,主要应用在英文。

匹配所有文档

MatchAllDocsQuery

上一篇 下一篇

猜你喜欢

热点阅读