6

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

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 类中检查。写入权限没有问题,因为我可以写入索引,而没有其他任何东西在使用索引文件。

4

2 回答 2

9

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

实际上,我在非常特定的场景中删除了 Lucene 中的一些异常,并获得了巨大的性能改进……但我确信不推荐这样做。

于 2013-09-20T05:12:21.693 回答
3

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

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

于 2014-07-22T20:32:45.220 回答