Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Lucene 3.6索引书写器_Java_Lucene - Fatal编程技术网

Java Lucene 3.6索引书写器

Java Lucene 3.6索引书写器,java,lucene,Java,Lucene,目前,我正在与Lucene 3.6合作,很难让IndexWriter正常工作 API文件建议: IndexWriter writer = new IndexWriter(Directory, Analyzer); (和其他一些类似的构造函数)被折旧,我应该使用如下内容: IndexWriter writer = new IndexWriter(Directory, Configuration); 但是eclipse不会识别这个新的构造函数(lucene-core3.6.jar被添加到我的项目

目前,我正在与Lucene 3.6合作,很难让IndexWriter正常工作

API文件建议:

IndexWriter writer = new IndexWriter(Directory, Analyzer);
(和其他一些类似的构造函数)被折旧,我应该使用如下内容:

IndexWriter writer = new IndexWriter(Directory, Configuration);
但是eclipse不会识别这个新的构造函数(lucene-core3.6.jar被添加到我的项目的构建路径中),如果我使用一个旧的构造函数,我必须抑制一个警告(我并不特别想这样做——当我使用这些旧的方法在内存中建立索引时会抛出一个异常)

我已经清理了项目,但问题仍然存在

编辑:我正在使用的代码:

        Directory index = new RAMDirectory();
    StandardAnalyzer analyzer = new StandardAnalyzer();
    IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36, analyzer);
    IndexDeletionPolicy IndexDeletionPolicy = new KeepOnlyLastCommitDeletionPolicy();
    MaxFieldLength fieldLength = new MaxFieldLength(256);
    IndexWriter writer = new IndexWriter(index, analyzer, false, IndexDeletionPolicy, fieldLength);
    //IndexWriter writer = new IndexWriter(index, config); 
    writer.setUseCompoundFile(false);

一个好的开始就是在javadoc上阅读:

建设者

构造和说明

  • IndexWriter(目录d、分析器a、布尔创建、IndexDeletePolicy deletionPolicy、, IndexWriter.MaxFieldLength mfl)已弃用。改用IndexWriter(目录,IndexWriterConfig)

  • IndexWriter(目录d、分析器a、布尔创建、, IndexWriter.MaxFieldLength mfl)已弃用。使用 改为IndexWriter(目录,IndexWriterConfig)

  • IndexWriter(目录d、分析器a、IndexDeletePolicy deletionPolicy,IndexWriter.MaxFieldLength(mfl)已弃用。使用 改为IndexWriter(目录,IndexWriterConfig)

  • IndexWriter(目录d、分析器a、IndexDeletePolicy 删除策略,IndexWriter.MaxFieldLength mfl,IndexCommit提交) 不赞成。改用IndexWriter(目录,IndexWriterConfig)

  • IndexWriter(目录d、分析器a、IndexWriter.MaxFieldLength mfl) 不赞成。改用IndexWriter(目录,IndexWriterConfig)

  • IndexWriter(目录d,IndexWriterConfig conf)根据conf中给出的设置构造一个新的IndexWriter。


毫不奇怪,您正在使用一个不推荐使用的构造函数,Eclipse正确地发出了警告。如果您使用最后一个构造函数,我相信Eclipse不会发出警告。

一个好的开端总是在javadoc上阅读:

建设者

构造和说明

  • IndexWriter(目录d、分析器a、布尔创建、IndexDeletePolicy deletionPolicy、, IndexWriter.MaxFieldLength mfl)已弃用。改用IndexWriter(目录,IndexWriterConfig)

  • IndexWriter(目录d、分析器a、布尔创建、, IndexWriter.MaxFieldLength mfl)已弃用。使用 改为IndexWriter(目录,IndexWriterConfig)

  • IndexWriter(目录d、分析器a、IndexDeletePolicy deletionPolicy,IndexWriter.MaxFieldLength(mfl)已弃用。使用 改为IndexWriter(目录,IndexWriterConfig)

  • IndexWriter(目录d、分析器a、IndexDeletePolicy 删除策略,IndexWriter.MaxFieldLength mfl,IndexCommit提交) 不赞成。改用IndexWriter(目录,IndexWriterConfig)

  • IndexWriter(目录d、分析器a、IndexWriter.MaxFieldLength mfl) 不赞成。改用IndexWriter(目录,IndexWriterConfig)

  • IndexWriter(目录d,IndexWriterConfig conf)根据conf中给出的设置构造一个新的IndexWriter。


毫不奇怪,您正在使用一个不推荐使用的构造函数,Eclipse正确地发出了警告。如果使用最后一个构造函数,我相信Eclipse不会发出警告。

您可能需要更改:

StandardAnalyzer analyzer = new StandardAnalyzer();
致:


StandardAnalyzer的构造函数接受一个版本对象。可能Eclipse无法识别IndexWriter构造函数,因为前面一行(即,当您尝试创建新的StandardAnalyzer时)存在编译时错误。

您可能需要更改:

StandardAnalyzer analyzer = new StandardAnalyzer();
致:

StandardAnalyzer的构造函数接受一个版本对象。可能Eclipse无法识别IndexWriter构造函数,因为前面一行(即,当您尝试创建新的StandardAnalyzer时)存在编译时错误。

我解决了这个问题:

有一个.jar文件干扰了lucene(thirdparty all.jar),我通过查看堆栈跟踪发现了这个文件。删除.jar已删除的问题

我解决了这个问题:


有一个.jar文件干扰了lucene(thirdparty all.jar),我通过查看堆栈跟踪发现了这个文件。删除.jar已删除的问题

不,我先试过了。抱歉,第一篇文章出错(编辑以反映这一点)。Eclipse不会使用该构造函数编译源代码,因此存在这个问题。对不起,我们一直在兜圈子。这是不可能的。这仅仅意味着在类路径中没有正确的类,或者有多个版本。当您编写新的IndexWriter(null,null)时,您遇到了哪个错误?构造函数IndexWriter(String,Analyzer)是不明确的。正如我所说的,您在类路径中没有正确的版本。我已经向您展示了javadoc的一个摘录,您可以读取到唯一具有两个参数的构造函数是最后一个。Eclipse怎么能抱怨您正在使用一个不存在的构造函数???您的类路径上可能有几个版本。你能用你正在使用的代码副本(Lucene 3.6构造函数)写一个要点吗?不,我先试过了。抱歉,第一篇文章出错(编辑以反映这一点)。Eclipse不会使用该构造函数编译源代码,因此存在这个问题。对不起,我们一直在兜圈子。这是不可能的。这仅仅意味着在类路径中没有正确的类,或者有多个版本。当您编写新的IndexWriter(null,null)时,您遇到了哪个错误?构造函数IndexWriter(String,Analyzer)是不明确的。正如我所说的,您在类路径中没有正确的版本。我已经向您展示了javadoc的一个摘录,您可以读取到唯一具有两个参数的构造函数是最后一个。Eclipse怎么能抱怨您正在使用一个不存在的构造函数???您的类路径上可能有几个版本。你能把要点和代码的副本放在一起吗