.net core 无法创建Lucene.Net StandardAnalyzer的实例

.net core 无法创建Lucene.Net StandardAnalyzer的实例,.net-core,indexing,lucene,lucene.net,.net Core,Indexing,Lucene,Lucene.net,我正在尝试使用Lucene.NET,我将遵循此链接上提供的文档 我正在使用Lucene版本(4.8.0-beta00012)和.NET Core 5.0版本 我在创建StandardAnalyzer对象的实例时遇到异常 const LuceneVersion AppLuceneVersion = LuceneVersion.LUCENE_48; // Create an analyzer to process the text var analy

我正在尝试使用Lucene.NET,我将遵循此链接上提供的文档

我正在使用Lucene版本(4.8.0-beta00012)和.NET Core 5.0版本

我在创建StandardAnalyzer对象的实例时遇到异常

const LuceneVersion AppLuceneVersion = LuceneVersion.LUCENE_48;
            // Create an analyzer to process the text
            var analyzer = new StandardAnalyzer(AppLuceneVersion);
我得到的例外是

“Lucene.Net.Analysis.Standard.StandardAnalyzer”的类型初始值设定项引发异常

找不到方法:“System.Collections.Generic.List`1 Lucene.Net.Support.Arrays.AsList(!!0[])”


非常感谢您的帮助,因为我无法继续进行我的POC。这是一个非常奇怪的错误消息。似乎是说系统找不到泛型列表类型。在.Net 5中,此类型存储在此处:

region Assembly System.Collections,版本=5.0.0.0,区域性=neutral,PublicKeyToken=b03f5f7f11d50a3a //C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\Ref\net5.0\System.Collections.dll

虽然您看到错误是因为StandardAnalyzer使用这种类型,而系统无法找到它,但问题很可能与Lucene.Net本身无关。您可以通过尝试执行以下操作来测试该理论:

     List<string> list = new List<string>();
     list.Add("hello world");

@安德鲁·詹姆斯:谢谢你的主意。使用v3.0.3无法与Azure directory和.net core配合使用,但您的评论确实引导了我的想法,我使用了Lucene.net的早期beta版本,似乎4.8.0-beta06效果良好。谢谢您。我陷入了困境,认为
安装包Lucene.Net-Pre
就足够了。但是在运行
安装包Lucene.Net.Analysis.Common-Version 4.8.0-beta00013
之后,我能够找到4.8缺少的组件,例如使用Lucene.Net.Analysis.Standard的via
[Fact]
        public void TestStandardAnalyzer() {

            Directory indexDir = new RAMDirectory();

            Analyzer standardAnalyzer = new StandardAnalyzer(LuceneVersion.LUCENE_48);

            IndexWriterConfig indexConfig = new IndexWriterConfig(LuceneVersion.LUCENE_48, standardAnalyzer);
            indexConfig.UseCompoundFile = true;

            IndexWriter writer = new IndexWriter(indexDir, indexConfig);

            //souce: https://github.com/apache/lucenenet/blob/Lucene.Net_4_8_0_beta00006/src/Lucene.Net/Search/SearcherFactory.cs
            SearcherManager searcherManager = new SearcherManager(writer, applyAllDeletes: true, new SearchWarmer());

            Document doc = new Document();
            doc.Add(new StringField("examplePrimaryKey", "001", Field.Store.YES));
            doc.Add(new TextField("exampleField", "Unique gifts are great gifts.", Field.Store.YES));
            writer.AddDocument(doc);

            doc = new Document();
            doc.Add(new StringField("examplePrimaryKey", "002", Field.Store.YES));
            doc.Add(new TextField("exampleField", "Everyone is gifted.", Field.Store.YES));
            writer.AddDocument(doc);

            doc = new Document();
            doc.Add(new StringField("examplePrimaryKey", "003", Field.Store.YES));
            doc.Add(new TextField("exampleField", "Gifts are meant to be shared.", Field.Store.YES));
            writer.AddDocument(doc);

            writer.Commit();

            searcherManager.MaybeRefreshBlocking();
            IndexSearcher indexSearcher = searcherManager.Acquire();
            try {
                QueryParser parser = new QueryParser(LuceneVersion.LUCENE_48, "exampleField", standardAnalyzer);     
                Query query = parser.Parse("everyone");

                TopDocs topDocs = indexSearcher.Search(query, int.MaxValue);

                int numMatchingDocs = topDocs.ScoreDocs.Length;
                Assert.Equal(1, numMatchingDocs);


                Document docRead = indexSearcher.Doc(topDocs.ScoreDocs[0].Doc);
                string primaryKey = docRead.Get("examplePrimaryKey");
                Assert.Equal("002", primaryKey);

            } finally {
                searcherManager.Release(indexSearcher);
            }
            
        }