Lucene
基本概念
Lucene在對(duì)信息索引時(shí)咳燕,有一些基本的抽象概念率碾。
- Document是搜索的基本單元性穿,相當(dāng)于關(guān)系型數(shù)據(jù)庫(kù)的一行鸿吆。
- Field是document的組成部分,相當(dāng)于關(guān)系型數(shù)據(jù)庫(kù)的列代态。
- Query是基本的查詢寺惫,包括指定的field和需要查詢的詞
在一次普通的查詢中,query是針對(duì)某個(gè)field的查詢蹦疑,查詢結(jié)果包括包含這個(gè)field同時(shí)滿足查詢?cè)~要求的document西雀。
查詢類型
項(xiàng)查詢
TermQuery是最基本的查詢,構(gòu)造時(shí)需要提供查詢的field和查詢?cè)~歉摧。
Term t = new Term("title","java");
Query query = new TermQuery(t);
范圍查詢
TermRangeQuery和NumericRangeQuery表示范圍查詢艇肴,前者主要是基于英文字母的field,后者主要是基于數(shù)字類型的field叁温。
字符串查詢
PrefixQuery 字符串前綴搜索
Term t = new Term("category","/technology/computers/programming");
PrefixQuery query = new PrefixQuery(t);
組合查詢
BooleanQuery,布爾查詢可以將基本的查詢通過布爾關(guān)系:與再悼、或和非,組合起來進(jìn)行查詢膝但,而且布爾查詢支持嵌套冲九。
短語(yǔ)查詢
PhraseQuery, 按照短語(yǔ)進(jìn)行查詢,可以設(shè)置短語(yǔ)的“距離”跟束,用slop表示莺奸,默認(rèn)為0
PhraseQuery query = new PhraseQuery();
query.setSlop(0);
query.add(new Term("field", "word"))
...
通配符查詢
WildcardQuery,支持*和?兩種通配符。
模糊搜索
FuzzyQuery基于編輯距離計(jì)算term的相似性冀宴,主要應(yīng)用在英文灭贷。
匹配所有文檔
MatchAllDocsQuery