lucene-使用QueryParser和IndexSearcher
QueryParser
QueryParser把查询表达式转换为lucene内置的查询类型
查询表达式
匹配的文档
java
默认域包含java项的文档
java junit
java or junit
默认域中包含java和junit中的一个或两个文档。
+java +junit
java AND junit
默认域中同时包含java和junit的文档
title:ant
Title域中包含ant项的文档
title:extreme
-subject:sports
title:extreme
AND NOT subject:sports
Title域中包含extreme且subject域中不包含sports的文档
(agile OR extreme) AND methodology
默认域中包含methodology且包含agile和extreme的一个或两个项的文档
Title:”junit in action”
Title域为junit in action的文档
Title:”juint action” -5
Title域中junit和action之间距离少于5的文档
Java*
包含由java开头的项的文档
Java-
包含与java相似的文档
Lastmodified:[1/1/04 to 12/31/04]
Lastmodified域值在1/1/04和12/31/04之间的文档
IndexSearcher实例只搜索在它被实例化时已存在的索引。如果制作索引和搜索并发进行,那么最新索引的文档对搜索来说是不可见的。
IndexSearcher.search的函数声明
使用场合
Hits search(Query query)
直接进行搜索,无需过滤
Hits search(Query query,Filter filter)
在过滤标准的约束下,把搜索限制在有效文档子之内
Void search(Query query,HitCollector results)
只有当我们需要使用搜索返回的所有文档时才调用这个方法。一般来说,只有搜索结果中前几个文档才是我们所需的,所有使用此方法会降低程序性能