使用 DotNetRDf.Query.FullText 创建 Lucene 索引器时出现异常

问题描述

嗨,我正在尝试在 .Net core 3.1 中使用 DotNetRDf.Query.FullText 来创建 Lucene 索引器,但低于运行时异常。你能帮忙解决这个问题吗?

System.TypeLoadException HResult=0x80131522 消息=无法加载 从程序集“Lucene.Net,Version=4.0.0.0”中输入“MaxFieldLength”, 文化=中性,PublicKeyToken=85089178b9ac3181'。

示例代码

var indexer = new LuceneObjectsIndexer(new RAMDirectory(),new StandardAnalyzer(LuceneVersion),new DefaultIndexSchema());

使用的软件包版本: DotNetRDF - 2.1.6 Lucene - 4.8.0-beta00013

解决方法

这似乎有些奇怪。 Lucene.net 3.x 有一个 MaxFieldLength 类型可以在 IndexWriter 构造函数中传递,但 Lucene.net 4.X 没有这样的类型,它的 IndexWriter 类没有接受这样的参数。

参见 Lucene.net 3.03 ImageWriter class 并将其与 Lucene.net 4.8 ImageWriter class 进行比较

因此感觉 DotNetRdf 库可能已编写为依赖于 ImageWriter 构造函数,该构造函数仅在 3.X 版本的 Lucene 中可用。如果您显示完整的堆栈跟踪,这可能有助于更清楚地了解情况。

查看 dotnetrdf.org 站点,我没有看到他们在哪里记录了他们使用的 Lucene 版本,但是这个错误清楚地表明该库是为 Lucene.Net 3.x 设计的。我建议您尝试使用 Lucene.Net 3.03 Nuget packages 而不是 4.8 测试版软件包,看看是否能解决您的问题。