软件包org.apache.lucene.demo
中的示例适用于文本搜索。
但是我无法使用它并显示修改时间。
似乎modified
字段已处理,但使用它没有成功。
运行 SearchFiles 打印匹配项
输入查询:
+kompl*
但这里没有
+kompl* +modified:[0 TO 9999999999999]
有人可以为此提供示例吗?
答案 0 :(得分:0)
我错误地认为文件属性对我隐式可用。 但是好吧,我必须自己做。
对于索引,我添加了一个简单的整数
// provide stored date integer to query for [yyyymmdd]
Date dt = new Date(lastModified);
int myDays = (dt.getYear()+1900)*100*100 + (dt.getMonth()+1)*100 + dt.getDate();
doc.add(new IntPoint("moddate", myDays ));
doc.add(new StoredField("moddateVal", myDays ));
对于搜索,我通过扩展解析器处理此字段
public static class QueryParserModdate extends QueryParser {
public QueryParserModdate(String f, Analyzer a) {
super(f, a);
}
protected Query getRangeQuery(String field, String part1, String part2,
boolean startInclusive, boolean endInclusive)
throws ParseException {
if (field.equalsIgnoreCase("moddate")) {
int part1Int = Integer.MIN_VALUE;
int part2Int = Integer.MAX_VALUE;
try {
part1Int = Integer.parseInt(part1);
} catch (Exception e) {
...
Query query = IntPoint.newRangeQuery("moddate", part1Int,
part2Int);
return query;
}
return super.getRangeQuery(field, part1, part2, startInclusive,
endInclusive);
}
肯定不是很漂亮,但为我工作。