Lucene.Net QueryParser 抛出一个 IOException(读取过去 eof)



我有以下代码,在其中传递搜索值和分析器:

private static Query Query(string searchValue, StandardAnalyzer analyzer)
{
    var queryParser = new QueryParser(Version.LUCENE_30, "Data", analyzer);
    return queryParser.Parse(searchValue);
}

Parse 方法中引发异常。

结果返回正确,所以一切正常;这只是那个烦人的异常。我应该忽略它吗?这是 Lucene.Net 的默认行为吗?我使用的是 3.0.3 版。

之前找到过这篇文章,但是答案中提到的要点都不适用。索引未损坏 - 在 Luke.Net 中由 Lucene 的 CheckIndex 类检查。写入权限没有问题,因为我可以写入索引,而没有其他任何东西使用索引文件。

Lucene 和 Lucene.net 都设计有确定代码控制流的异常。 当调试器符号运行时,你将看到所有异常。 但是,应在库内隔离和处理异常。 如果您没有处理异常并在 UI 中引发错误,那么这就是一个问题。

我实际上在非常特定的情况下删除了 Lucene 中的一些异常,并获得了巨大的性能改进......但我相信不建议这样做。

Lucene.NET(在版本3.0.3时)使用IOExceptions来管理解析器流的多个部分。这对性能产生了不良影响(在我的开发计算机上长达 90 毫秒)。

好消息是,目前在 http://lucenenet.apache.org/community.html 源代码存储库中的版本似乎已经删除了导致此问题的特定异常。当然,对我来说,这大大提高了性能。希望这有帮助。

相关内容

最新更新