gpt4 book ai didi

lucene - 如何让 Lucene QueryParser 更宽容?

转载 作者:行者123 更新时间:2023-12-03 09:04:44 26 4
gpt4 key购买 nike

我正在使用 Lucene.net,但我为 .NET 和 Java 版本都标记了这个问题,因为 API 是相同的,我希望这两个平台上都有解决方案。

我确信其他人已经解决了这个问题,但我还没有找到任何好的讨论或例子。

默认情况下,Lucene 对查询语法非常挑剔。例如,我刚刚收到以下错误:

[ParseException: Cannot parse 'hi there!': Encountered "<EOF>" at line 1, column 9.
Was expecting one of:
"(" ...
"*" ...
<QUOTED> ...
<TERM> ...
<PREFIXTERM> ...
<WILDTERM> ...
"[" ...
"{" ...
<NUMBER> ...
]
Lucene.Net.QueryParsers.QueryParser.Parse(String query) +239

在处理来自用户的查询时,防止 ParseExceptions 的最佳方法是什么?在我看来,最有用的搜索界面是始终执行查询的界面,即使它可能是错误的查询。

似乎有一些可能的互补策略:
  • 在将查询发送到 QueryProcessor 之前“清理”查询
  • 优雅地处理异常
  • 向用户显示智能错误消息
  • 也许执行一个更简单的查询,省略错误位

  • 对于如何执行这些策略,我真的没有什么好主意。有没有其他人解决过这个问题?有没有我不知道的“简单”或“优雅”解析器?

    最佳答案

    你可以通过使用类似的东西清理查询来让 Lucene 忽略特殊字符

    query = QueryParser.Escape(query)

    如果您不希望您的用户在他们的查询中使用高级语法,您可以始终这样做。

    如果您希望您的用户使用高级语法,但您也希望对错误更加宽容,您应该只在 ParseException 发生后进行清理。

    关于lucene - 如何让 Lucene QueryParser 更宽容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/263081/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com