lucene4 query
lucene 查询器Query
1、TermQuery 匹配文档包含的一个词(term).它可以跟其它词条进行组合,然后用BooleanQuery和包装
Term term = new Term("keyword","饭店"); Term term2 = new Term("keyword","大"); Query query1 = new TermQuery(term); Query query2 = new TermQuery(term2); BooleanQuery query = new BooleanQuery(); query.add(query1,Occur.SHOULD); query.add(query2,Occur.SHOULD);最终的查询语句为"keyword:大 keyword:饭店",相当于两个词条组合成新的或关系。
2、BooleanQuery 匹配文档是否包含 queries,同TermQuery,PhraseQuery以及其它BooleanQuery组合使用。默认最大包含分项为1024,可以更改
BooleanClause是BolleanQuery的查询关系:MUST : "+" SHOULD:"" MUST_NOT:"-" 分别代表与或非三种关系也可以直接用+,空格,-三种来表示。最终的查询语句都是这种表示法如第1个最终查询语句 "keyword:大 keyword:饭店", 表示或的关系。
BooleanQuery localBooleanQuery = new BooleanQuery(); int size = 0; if (nidList != null) { size = nidList.size(); } for (int i = 0; (i < size) && (i < 1024); i++) { Term localTerm = new Term("line_id", nidList.get(i)); TermQuery localTermQuery = new TermQuery(localTerm); localBooleanQuery.add(localTermQuery, BooleanClause.Occur.SHOULD); }
3、WildcardQuery 通配符查询,与其它查询类似,*代表多个字符,?代表单个字符.
一共有三个定义:wildcard_string='*',匹配任意字符序列,包括空;wildcard_char='?',匹配单个字符序列;wildcard_escape='\\',专门匹配\
query.add(new WildcardQuery(new Term(field, "*"+keyword+"*")), BooleanClause.Occur.MUST);
4、PhraseQuery 直接用来查询写好的语句,例如“new work”,查询包括“new”或者"work"的记录,这个查询器通常与BooleanQuery结合来一块使用。这个查询器中有最著名的slop属性,该属性是用来确定词与词之间的间隔个数,例如
setSlop(2),则代表new 和work之间可以隔两个不相干的词,如果不设置则默认为0。
Query query = parser.parse("中华共和国"); PhraseQuery pquery = (PhraseQuery)query; pquery.setSlop(1);
5、PrefixQuery 前缀查询器,跟据Term的前缀来匹配。例如:App* ,查询以App开头的记录。
6、MultiPhraseQuery 多字段解析查询,跟PhraseQuery区别,在于多个字段。例如,在搜索Teram"Microsoft App*"的同时还可以加上“Microsoft”相当于prefix 使用 IndexReader.terms(Term), 和使用 MultiPhraseQuery.add(Term[]
* terms) 增加到这个查询
7、FuzzyQuery 模糊查询,该类继承自MUltiPhraseQuery类
基本上分为两大类:普通查询和解析查询。4、6属于后者,派生出N多相关的查询类.其它的查询API......
相关推荐
renjinlong 2020-09-03
Jacry 2020-07-04
IceStreamLab 2020-06-26
mengyue 2020-06-09
PasserbyX 2020-05-16
mameng 2020-05-12
心丨悦 2020-05-06
编码之路 2020-05-03
mengyue 2020-05-02
qiuzhuoxian 2020-02-23
编码之路 2020-02-20
lionelf 2020-02-03
TyCoding 2020-02-01
heniancheng 2020-01-31
某某某 2020-01-30
PinkBean 2020-01-29
某某某 2020-01-12
编码之路 2020-01-01
itmale 2020-01-01