我有以下代码,我传递了一个搜索值和一个分析器:
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版本。
之前发现this帖子,但答案中提到的所有要点都不适用。索引没有损坏 - 在Luke.Net和Lucene的CheckIndex类中检查。写入权限没有问题,因为我可以写入索引,而其他任何东西都没有使用索引文件。
答案 0 :(得分:8)
Lucene和Lucene.net都设计了Exceptions,用于确定代码的控制流。调试器符号运行时,您将看到异常。但是,应该在库中隔离和处理异常。如果您没有处理异常并在UI中抛出错误,那么这就是一个问题。
我实际上在非常具体的情况下删除了Lucene中的一些例外,并获得了巨大的性能提升......但我确信不建议这样做。
答案 1 :(得分:3)
Lucene.NET(版本3.0.3时)使用IOExceptions来管理解析器流的几个部分。这对性能产生了不良影响(在我的开发机器上高达90毫秒)。
好消息是,目前位于http://lucenenet.apache.org/community.html的源代码存储库中的版本似乎已删除导致此问题的特定异常。当然对我来说,这已经提高了很多性能。希望这会有所帮助。