我在个人项目中使用 Lucene.Net,需要处理案例,但找不到一个好方法让 lucene 使用相同类型的查询来处理这两个案例。
基本查询使用 MultiFieldQueryParser 和 StandardAnalyzer 和 NumericRangedFilter 来按日期过滤(日期保存为长值)。
问题是我希望过滤器处理空搜索字符串,而不必使用两个不同的查询解析器,一个用于空搜索字符串,一个用于用户输入搜索字符串。当前,当使用空字符串时,MultiFieldQueryParser 会引发 ParseException。
有关处理此问题的最佳方法的任何建议?或者这是 Lucene 或 Lucene.Net 中的一个缺陷(有意或无意)。
结果
如果查询字符串为空,则我最终使用 MatchAllDocsQuery,否则使用普通查询。
此外,我不得不删除 NumericFields 和 NumericRangeFilter 的使用,因为当我使用它们时查询没有返回任何结果。我最终使用字符串和普通 RangeFilter 以旧方式进行日期范围过滤。