当前位置: 首页 > 知识库问答 >
问题:

Lucene带筛选器的空查询字符串

濮翰学
2023-03-14

我在用LuceneNet在个人项目中,需要处理案例,但找不到一个好的方法,Lucene将使用相同类型的查询处理这两个案例。

基本查询使用带有StandardAnalyzer的MultiFieldQueryParser和NumericRangedFilter按日期进行筛选(日期保存为长值)。

问题是,我希望过滤器处理空搜索字符串,而不必使用两个不同的查询解析器,一个用于空搜索字符串,另一个用于用户输入搜索字符串。当前,当使用空字符串时,MultiFieldQueryParser会抛出ParseException。

有什么建议最好的处理方法吗?或者这是Lucene或Lucene中的缺陷(有意或无意的)。网。

后果

如果查询字符串是空的,我最终使用了MatchAllDocsQuery,否则使用普通查询。

此外,我还必须删除NumericFields和NumericRangeFilter的使用,因为当我使用它们时,查询没有返回任何结果。最后,我用字符串和普通的RangeFilter以旧的方式进行日期范围筛选。

共有1个答案

秦学林
2023-03-14

处理它的最佳方法是生成一个MatchAllDocsQuery并在输入为空字符串时绕过解析器。

http://lucene.apache.org/core/old_versioned_docs/versions/2_9_4/api/all/org/apache/lucene/search/MatchAllDocsQuery.html

 类似资料:
  • 好吧,这一个对你们中的一个超级棒的弹性搜索专家来说可能不会太难。我得到了这个嵌套查询,我希望嵌套查询在一个非嵌套字段(状态)上进行过滤。我不知道把过滤器放在哪里。我试着把它放在一个查询中(如下),但没有给出正确的结果。你能帮我吗?

  • 我看不到任何关于何时应该使用查询或过滤器或两者结合的描述。他们之间有什么区别?谁能解释一下吗?

  • 我很难理解如何处理lucene中的特殊角色 我的分析器没有停止字,因此不会删除特殊字符: 比我创建文档要多: 查询标签:brüder\-g工作正常,但是模糊查询标签:brüder\-g~不返回任何内容。当街道名称为Eselgasse查询标签时:Esel~将正常工作。 我使用Lucene 5.3.1 谢谢你的帮助!

  • 下面的lucene查询返回空字符串请帮忙,提前谢谢

  • 我只是好奇为什么Lucene不以标准的方式区分字符串和数值。。例如,范围查询的和,并在默认情况下将它们全部视为字符串。 是否有任何特殊原因将这两种情况都视为字符串值?

  • ID 主题 semester_id 年份 节 Professor_ID 具有以下属性: ID 教员 super_user first_name last_name 但我不确定该用哪一种。 目前,我正在使用后者的扩展形式。我的推理是,如果我想添加过滤/排序标准,它更可缩放。 是否有使用查询字符串与资源路径进行筛选条件的标准实践?过去一些较大的API做了什么?是否可以接受或鼓励同时使用两个范例(使两个