【问题标题】:Searching for multi keywords in multi fields using LUCENE library使用 LUCENE 库在多字段中搜索多个关键字
【发布时间】:2014-02-18 09:48:04
【问题描述】:

我想在字段 1 中搜索关键字 1,在字段 2 中搜索关键字 2 实际上这段代码工作得很好,但它给了我 field1 和 field2 的结果,其中一个包含关键字:

StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_46, stopWordsSet );

String[] fields = { "field1", "field2"};
Float float10 = new Float(10);
Float float5 = new Float(5);
Map<String, Float> boost = new HashMap<String, Float>();
boost.put("nom", float10);
boost.put("email", float10);
MultiFieldQueryParser mfqp = new MultiFieldQueryParser(Version.LUCENE_46,fields, analyzer, boost);
mfqp.setAllowLeadingWildcard(true); 
Query userQuery = mfqp.parse("*keyword*");

【问题讨论】:

    标签: lucene


    【解决方案1】:

    您的问题似乎是关于在 字段 1 和字段 2 中查找包含“关键字”的文档。如果这是正确的,以下可能会有所帮助。请注意默认运算符为 OR 时所需的 + 号。

    Query userQuery = mfqp.parse("+field1:*keyword* +field2:*keyword*")
    

    【讨论】:

      【解决方案2】:

      如果您想查找 field1 中包含关键字 1 和 field2 中包含关键字 2 的文档,那么布尔查询可能会有所帮助:

      BooleanQuery query = new BooleanQuery();
      query.add(new TermQuery(new Term("field1", "keyword1")), BooleanClause.Occur.MUST);
      query.add(new TermQuery(new Term("field2", "keyword2")), BooleanClause.Occur.MUST);
      

      【讨论】:

        猜你喜欢
        • 2012-02-25
        • 1970-01-01
        • 2012-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-05
        • 1970-01-01
        • 2011-09-14
        相关资源
        最近更新 更多