【问题标题】:Lucene QueryParser and how to add a global filter?Lucene QueryParser 以及如何添加全局过滤器?
【发布时间】:2013-10-25 21:01:17
【问题描述】:

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

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

【问题讨论】:

    标签: lucene


    【解决方案1】:

    使用 FilteredQuery http://lucene.apache.org/core/4_0_0/core/org/apache/lucene/search/FilteredQuery.html 包装从 QueryParer 返回的 Query 对象

    【讨论】:

      【解决方案2】:

      使用query filters 是正确的做法。

      附加的问题在于,理论上这很容易受到查询注入攻击(想想SQL injection,但对于 Lucene 查询)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-20
        • 2022-01-05
        • 1970-01-01
        • 2018-02-15
        • 2017-05-18
        • 2012-06-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多