无法在Windows上将补丁LUCENE-2899.patch应用于SOLR [英] Can not apply patch LUCENE-2899.patch to SOLR on Windows

查看:89
本文介绍了无法在Windows上将补丁LUCENE-2899.patch应用于SOLR的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将补丁LUCENE-2899.patch应用于Solr.

I am trying to apply patch LUCENE-2899.patch to Solr.

我已经这样做了:

  1. 官方仓库中的克隆solr(我在主分支中)
  2. 已下载并安装了ant和GNU补丁,我在这里找到它 http://gnuwin32.sourceforge .net/packages/patch.htm
  3. 将Ant和GNU补丁放入PATH环境变量.
  4. 我明白了...
  1. Cloned solr from official repo (I am on master branch)
  2. Downloaded and installed ant and GNU patch, i get it here http://gnuwin32.sourceforge.net/packages/patch.htm
  3. Put Ant and GNU patch to PATH env var.
  4. And I got this...

```

D:\utils\solr_master\lucene-solr>patch -p1 -i LUCENE-2899.patch --dry-run
patching file dev-tools/idea/.idea/ant.xml
Assertion failed: hunk, file ../patch-2.5.9-src/patch.c, line 354

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

```

更新1

我正在尝试编译,但是构建失败.

I am trying to compile, but build failed.

D:\utils\solr_master\lucene-solr>ant compile
Buildfile: D:\utils\solr_master\lucene-solr\build.xml

BUILD FAILED
D:\utils\solr_master\lucene-solr\build.xml:21: The following error occurred while executing this line:
D:\utils\solr_master\lucene-solr\lucene\common-build.xml:623: java.lang.NullPointerException
        at java.util.Arrays.stream(Arrays.java:5004)
        at java.util.stream.Stream.of(Stream.java:1000)
        at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267)
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
        at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:545)
        at java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
        at java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:438)
        at org.apache.tools.ant.util.ChainedMapper.lambda$mapFileName$1(ChainedMapper.java:36)
        at java.util.stream.ReduceOps$1ReducingSink.accept(ReduceOps.java:80)
        at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.reduce(ReferencePipeline.java:484)
        at org.apache.tools.ant.util.ChainedMapper.mapFileName(ChainedMapper.java:35)
        at org.apache.tools.ant.util.CompositeMapper.lambda$mapFileName$0(CompositeMapper.java:32)
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
        at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:545)
        at java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
        at java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:438)
        at org.apache.tools.ant.util.CompositeMapper.mapFileName(CompositeMapper.java:33)
        at org.apache.tools.ant.taskdefs.PathConvert.execute(PathConvert.java:363)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:346)
        at org.apache.tools.ant.Target.execute(Target.java:448)
        at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:172)
        at org.apache.tools.ant.taskdefs.ImportTask.importResource(ImportTask.java:221)
        at org.apache.tools.ant.taskdefs.ImportTask.execute(ImportTask.java:165)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:346)
        at org.apache.tools.ant.Target.execute(Target.java:448)
        at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:183)
        at org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:93)
        at org.apache.tools.ant.Main.runBuild(Main.java:824)
        at org.apache.tools.ant.Main.startAnt(Main.java:228)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:283)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:101)

Total time: 0 seconds

更新2

我已经从

https://builds.apache. org/job/Solr-Artifacts-7.3/lastSuccessfulBuild/artifact/solr/package/ 但是对于 7.3 版本和 8.0(主版本)版本都没有,我在 contrib目录中看不到 opennlp目录 /em>.在哪里可以找到它?

but neither for 7.3 version nor for 8.0(master) version I don't see opennlp dir in contrib dir. Where can I find it?

更新3

我已从此处下载的主分支巫婆运行版本

I have run version from master branch witch I have downloaded here https://builds.apache.org/job/Solr-Artifacts-master/lastSuccessfulBuild/artifact/solr/package/ and I have trying to run OpenNLP like gentleman in this post:

将openNLP与Solr集成时发生异常

但是我和他有同样的错误.

But I have the same error as he.

numberplate_shard1_replica_n1:
org.apache.solr.common.SolrException:org.apache.solr.common.SolrException:>无法为核心numberplate_shard1_replica_n1加载conf:无法加载架构> managed-schema:[schema.xml] fieldType的插件初始化失败"text_opennlp_nvf":[schema.xml]分析器/令牌生成器的插件初始化失败:>实例化类"org.apache.lucene.analysis.opennlp.OpenNLPTokenizerFactory"时出错

numberplate_shard1_replica_n1:
org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: >Could not load conf for core numberplate_shard1_replica_n1: Can't load schema >managed-schema: Plugin init failure for [schema.xml] fieldType >"text_opennlp_nvf": Plugin init failure for [schema.xml] analyzer/tokenizer: >Error instantiating class: 'org.apache.lucene.analysis.opennlp.OpenNLPTokenizerFactory'

如果将LUCENE-2899补丁合并到master中,为什么会出现此错误?

If patch LUCENE-2899 is merged into master why I have this error?

更新5

我重新启动了solr,错误消失了.但是...

I have restarted solr and errors were gone. But...

我试图将字段(添加到托管模式)以形成示例( https://wiki .apache.org/solr/OpenNLP ):

I was trying to add fields ( to managed-schema ) to form example ( https://wiki.apache.org/solr/OpenNLP ) :

<fieldType name="text_opennlp" class="solr.TextField">
      <analyzer>
        <tokenizer class="solr.OpenNLPTokenizerFactory"
          sentenceModel="opennlp/en-sent.bin"
          tokenizerModel="opennlp/en-token.bin"
        />
      </analyzer>
    </fieldType>

    <field name="content" type="text_opennlp" indexed="true" termOffsets="true" stored="true" termPayloads="true" termPositions="true" docValues="false" termVectors="true" multiValued="true" required="true"/>

但是当我尝试在Cloud模式下运行Solr时,我得到了:

But when I try to run Solr in Cloud mode I got this:

D:\utils\solr-7.3.0-7\solr-7.3.0-7\bin>solr -e cloud

Welcome to the SolrCloud example!

This interactive session will help you launch a SolrCloud cluster on your local workstation.
To begin, how many Solr nodes would you like to run in your local cluster? (specify 1-4 nodes) [2]:
1
Ok, let's start up 1 Solr nodes for your example SolrCloud cluster.
Please enter the port for node1 [8983]:

Solr home directory D:\utils\solr-7.3.0-7\solr-7.3.0-7\example\cloud\node1\solr already exists.

Starting up Solr on port 8983 using command:
"D:\utils\solr-7.3.0-7\solr-7.3.0-7\bin\solr.cmd" start -cloud -p 8983 -s "D:\utils\solr-7.3.0-7\solr-7.3.0-7\example\cloud\node1\solr"

Waiting up to 30 to see Solr running on port 8983
Started Solr server on port 8983. Happy searching!
INFO  - 2018-03-26 14:42:26.961; org.apache.solr.client.solrj.impl.ZkClientClusterStateProvider; Cluster at localhost:9983 ready

Now let's create a new collection for indexing documents in your 1-node cluster.
Please provide a name for your new collection: [gettingstarted]
numberplate

Collection 'numberplate' already exists!
Do you want to re-use the existing collection or create a new one? Enter 1 to reuse, 2 to create new [1]:
1

Enabling auto soft-commits with maxTime 3 secs using the Config API

POSTing request to Config API: http://localhost:8983/solr/numberplate/config
{"set-property":{"updateHandler.autoSoftCommit.maxTime":"3000"}}

ERROR: Error from server at http://localhost:8983/solr: Expected mime type application/octet-stream but got text/html. <html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 404 Not Found</title>
</head>
<body><h2>HTTP ERROR 404</h2>
<p>Problem accessing /solr/numberplate/config. Reason:
<pre>    Not Found</pre></p>
</body>
</html>




SolrCloud example running, please visit: http://localhost:8983/solr


D:\utils\solr-7.3.0-7\solr-7.3.0-7\bin>

更新6

我创建了新集合,但出现了更精确的错误:

I have created new collection and I get more precise error:

test_collection_shard1_replica_n1:> org.apache.solr.common.SolrException:org.apache.solr.common.SolrException:>无法为核心test_collection_shard1_replica_n1加载conf:无法加载>架构托管模式:org.apache.solr .core.SolrResourceNotFoundException:>在类路径或'/configs/_default'中找不到资源'opennlp/en-sent.bin',> cwd = D:\ utils \ solr-7.3.0-7 \ solr-7.3. 0-7 \服务器 请检查您的日志以获取更多信息

test_collection_shard1_replica_n1: > org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: > Could not load conf for core test_collection_shard1_replica_n1: Can't load > schema managed-schema: org.apache.solr.core.SolrResourceNotFoundException: > Can't find resource 'opennlp/en-sent.bin' in classpath or '/configs/_default', > cwd=D:\utils\solr-7.3.0-7\solr-7.3.0-7\server Please check your logs for more information

也许我需要在某个地方复制OpenNLP模型 http://opennlp.sourceforge.net/models- 1.5/

Maybe I need to copy somewhere OpenNLP models http://opennlp.sourceforge.net/models-1.5/

但是我可以把这个模型放在哪里?

But where can I put this models?

你能帮我吗?我做错了什么?

Can you help me? What I do wrong?

推荐答案

您可以在

As you can see on LUCENE-2899, the patch is already applied to 8.0 (master), as well as 7.3.

您可以在 Solr-Artifacts-master(当前)8.0 Solr-Artifacts-7.3 for 7.3 .

opennlp库捆绑在工件中:

The opennlp libraries are bundled inside the artifacts:

solr-8.0.0-3304 find . -name '*nlp*'
[...]
./contrib/langid/lib/opennlp-tools-1.8.3.jar
./contrib/analysis-extras/lib/opennlp-maxent-3.0.3.jar
./contrib/analysis-extras/lib/opennlp-tools-1.8.3.jar
./contrib/analysis-extras/lucene-libs/lucene-analyzers-opennlp-8.0.0-3304.jar

然后,您必须告诉Solr加载这些jar,其中

You then have to tell Solr to load these jars, which you can do through solrconfig.xml.

<lib dir="../../../contrib/analysis-extras/lib/" regex="opennlp-.*\.jar" />
<lib dir="../../../contrib/analysis-extras/lucene-libs/lucene-analyzers-opennlp-.*\.jar" regex=".*\.jar" />

确认罐子已按预期加载到Solr的日志文件中.

Confirm that the jars are loaded as you expect in Solr's log file.

这篇关于无法在Windows上将补丁LUCENE-2899.patch应用于SOLR的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆