Lucene QueryParser以及如何添加全局过滤器?

时间:2013-10-25 12:02:11

标签: lucene

我在索引中有三个字段; firstname,lastname和isManager(1或0)。 如何使用QueryParser并将isManager(作为全局过滤器)添加到1,以便我只有效地搜索管理器?

因此,如果用户搜索/传入“firstname:john”,我想添加/追加“isManager:1”作为全局过滤器。一种解决方案是将“NOT isManager:0”附加到所有用户的查询字符串......但是想知道是否还有其他首选方式。

2 个答案:

答案 0 :(得分:0)

使用FilteredQuery http://lucene.apache.org/core/4_0_0/core/org/apache/lucene/search/FilteredQuery.html

包装从QueryParer返回的Query对象

答案 1 :(得分:0)

使用query filters是正确的方法。

附加问题是理论上这很容易发生查询注入攻击(想想SQL injection但是对于Lucene查询)。