Lucene学习总结-查询

本文介绍了如何使用Term和QueryParser生成查询,并解释了查询权重的几个关键因素,包括tf,idf,boost,lengthNorm,coord(q,d),并讨论了不同类型的查询如TermQuery、RangeQuery、PrefixQuery等。此外,还提供了关于查询解析器QueryParser的功能和局限性的说明。

通过Term来生成查询:

IndexSearcher searcher = new IndexSearcher("build/index");
Term t = new Term("subject", "ant");
Query query = new TermQuery(t);
TopDocs docs = searcher.search(query, 10);

通过QueryParser来生成查询:

IndexSearcher searcher = new IndexSearcher("build/index");
QueryParser parser = new QueryParser("contents",
new SimpleAnalyzer());
Query query = parser.parse("+JUNIT +ANT -MOCK");
TopDocs docs = searcher.search(query, 10);
Document d = searcher.doc(docs.scoreDocs[0].doc);


查询权重的几个因素:详见:http://www.cnblogs.com/forfuture1978/archive/2010/03/07/1680007.html

tf,idf,boost:线性增加文档权重或者某个Field的权重,lengthNorm:归一化文档长度,coord(q, d):文档中包含的查询词数量。

Explanation:得到查询的评分细则。

TermQuery:不需要parse,不需要分词,直接按term项来查找。

RangeQuery:按照范围查询。

PrefixQuery,BooleanQuery,

PhraseQuery:短语查询,必须完全包含短语,slop指定间隔的距离。

WildcardQuery:通配符查询

FuzzyQuery:模糊查询,性能低

MatchAllDocsQuery:例子很少,不太明白

QueryParser:功能强大但是并不万能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值