我将我的C sharp应用程序中的Lucene.net从3.0.3升级到4.8.0-beta0004,我还安装了最后一个版本的Lucene.net.analysis.common和Lucene.net.queries。
我的代码中有几行抛出错误:
错误1 :) Analyzer standAnalyzer =新的StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);
错误是:找不到类型或命名空间名称“StandardAnalyzer”。
错误2) Lucene.Net.QueryParsers.QueryParser parser = new Lucene.Net.QueryParsers.QueryParser(Lucene.Net.Util.Version.LUCENE_30,“Content”,standAnalyzer);
错误是:命名空间“Lucene.Net”中不存在类型或命名空间名称“QueryParsers”
错误3) Lucene.Net.Search.Searcher schr = new Lucene.Net.Search.IndexSearcher(Lucene.Net.Index.IndexReader.Open(directory,true));
错误是:命名空间“Lucene.Net.Search”中不存在类型或命名空间名称“Searcher”
我在我的代码中使用了以下namaspace:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Lucene.Net.Analysis;
using Lucene.Net.Index;
using Lucene.Net.Search;
using Lucene.Net.Search.Spans;
可以请帮忙吗?感谢
答案 0 :(得分:2)
Lucene的项目结构从3.x变为4.x并且大小增加了10倍以上。因此,许多类不再像以前那样位于同一个命名空间中。
using Lucene.Net.Analysis.Standard
。using Lucene.Net.QueryParsers.Classic
。请注意,现在有许多其他类型的QueryParser可用。Searcher
基类。解决此问题的最简单方法是将行更改为:var schr = new Lucene.Net.Search.IndexSearcher(Lucene.Net.Index.IndexReader.Open(directory, true));
为了将来参考,您可以查看Lucene 4.8.0 API doucmentation (in Java)以查看项目结构的更改方式。 Lucene.Net非常密切地遵循这一结构。
此外,使用Visual Studio 2015或更高版本,有一个很好的功能,允许您根据类名自动添加using
语句。您只需将鼠标悬停在红色下划线的类型上,然后点击小灯泡下拉列表。
答案 1 :(得分:1)
最新的预发行版本(现在为4.8.0-beta00008
)在主要的NuGet软件包中没有Lucene.Net.Analysis.Common(即先前对using Lucene.Net.Analysis.Standard
的回答将不起作用)。命名空间可以另外作为
Install-Package Lucene.Net -Version 4.8.0-beta00008
Install-Package Lucene.Net.Analysis.Common -Version 4.8.0-beta00008