我在索引中有三个字段; firstname,lastname和isManager(1或0)。 如何使用QueryParser并将isManager(作为全局过滤器)添加到1,以便我只有效地搜索管理器?
因此,如果用户搜索/传入“firstname:john”,我想添加/追加“isManager:1”作为全局过滤器。一种解决方案是将“NOT isManager:0”附加到所有用户的查询字符串......但是想知道是否还有其他首选方式。
答案 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查询)。