【问题标题】:lucene.net combine multiple filters and no search termslucene.net 结合了多个过滤器并且没有搜索词
【发布时间】:2009-08-20 17:47:19
【问题描述】:

如何在 Lucene.Net 中跨多个字段进行过滤?在一个领域我只是这样做:

TermQuery tool = new TermQuery(new Term("Tool", "Nail"));
Filter f = new QueryFilter(tool);

如果我现在想为过滤器添加指甲长度,我该怎么做?

另外,我希望用户能够在没有搜索词的情况下进行搜索(即只需选择一个类别),我该怎么做?

【问题讨论】:

    标签: full-text-search lucene lucene.net


    【解决方案1】:

    我想你在问两个问题......

    问题 1:添加额外的过滤器

    请记住,QueryFilter 接受 any 查询(不仅仅是TermQuery)。因此,您可以创建一个 BooleanQuery 您希望过滤的条件。

    TermQuery toolQuery = new TermQuery(new Term("Tool", "Nail"));
    TermQuery nailLengthQuery = new TermQuery(new Term("NailLength", "3 inches"));
    
    BooleanQuery filterQuery = new BooleanQuery();
    filterQuery.add(toolQuery, BooleanClause.Occur.MUST);
    filterQuery.add(nailLengthQuery, BooleanClause.Occur.MUST);
    
    Filter f = new QueryFilter(filterQuery);
    

    问题 2:不使用搜索词进行搜索

    如果用户没有提供搜索词,您可以使用MatchAllDocsQuery 查询进行搜索。

    【讨论】:

      猜你喜欢
      • 2010-12-08
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 2012-11-02
      • 2018-06-04
      相关资源
      最近更新 更多