升级到Lucene .net 4.8.0-beta0004时的代码问题

时间:2017-07-08 01:57:46

标签: lucene.net

我将我的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;

可以请帮忙吗?感谢

2 个答案:

答案 0 :(得分:2)

Lucene的项目结构从3.x变为4.x并且大小增加了10倍以上。因此,许多类不再像以前那样位于同一个命名空间中。

  1. StandardAnalyzer - 添加using Lucene.Net.Analysis.Standard
  2. QueryParser - 添加using Lucene.Net.QueryParsers.Classic。请注意,现在有许多其他类型的QueryParser可用。
  3. IndexSearcher - 不再是抽象的Searcher基类。解决此问题的最简单方法是将行更改为:var schr = new Lucene.Net.Search.IndexSearcher(Lucene.Net.Index.IndexReader.Open(directory, true));
  4. 为了将来参考,您可以查看Lucene 4.8.0 API doucmentation (in Java)以查看项目结构的更改方式。 Lucene.Net非常密切地遵循这一结构。

    此外,使用Visual Studio 2015或更高版本,有一个很好的功能,允许您根据类名自动添加using语句。您只需将鼠标悬停在红色下划线的类型上,然后点击小灯泡下拉列表。

    enter image description here

答案 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

https://www.nuget.org/packages/Lucene.Net.Analysis.Common/