Lucene学习总结-查询

通过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:功能强大但是并不万能

你可能感兴趣的:(ant,JUnit,Lucene,query,文档,2010)