微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SOLR 8.4.1:无法将 OpenNLP bin 文件上传到 zookeeper

如何解决SOLR 8.4.1:无法将 OpenNLP bin 文件上传到 zookeeper

我正在尝试为 SOLR 设置 OpenNLP 功能,为此,我需要配置专用的 fieldType:

<fieldType name="text_opennlp" class="solr.TextField" positionIncrementGap="100" multiValued="true" >
<analyzer>
  <tokenizer class="solr.OpenNLPTokenizerFactory"
    sentenceModel="en-sent.bin"
    tokenizerModel="en-token.bin"/>
  <filter class="solr.OpenNLPPOSFilterFactory" posTaggerModel="en-pos-maxent.bin"/>
  <filter class="solr.OpenNLPChunkerFilterFactory" chunkerModel="en-chunker.bin"/>
  <filter class="solr.TypeAsPayloadFilterFactory"/>
</analyzer>

我将所需的文件:en-sent.bin、en-token.bin、en-pos-maxent.bin 和 en-chunker.bin 放入适当的集合配置目录并触发:

bin/solr.cmd zk upconfig -d ../solr_config/myCollection -n myConfig -z localhost:9983 并得到错误

java.io.IOException: An established connection was aborted by the software in your host machine
at sun.nio.ch.socketdispatcher.read0(Native Method)
at sun.nio.ch.socketdispatcher.read(Socketdispatcher.java:43)
at sun.nio.ch.IoUtil.readIntoNativeBuffer(IoUtil.java:223)
at sun.nio.ch.IoUtil.read(IoUtil.java:192)
at sun.nio.ch.socketChannelImpl.read(SocketChannelImpl.java:380)
at org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:75)
at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:363)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1223)

上传目录中没有这些文件的配置工作正常(没有新字段)。

我使用的是 SOLR 8.4.1

解决方法

Zookeeper 有 a default maximum file size of 1MB。通常这些文件比那个大,所以你必须在你的 ZK 集群中调整大小。

某些 Solr 功能,例如文本分析同义词、LTR 和 OpenNLP 命名实体识别,需要可能大于默认限制的配置资源。可以通过 Java 系统属性 jute.maxbuffer 配置 ZooKeeper,以增加此限制。请注意,此配置对于 ZooKeeper 服务器和连接到服务器的所有客户端都是必需的,在指定的任何地方都必须相同。

jute.maxbuffer 设置为足以保存文件的大小。您可以通过向 JVM 提供 -Djute.maxbuffer=... 参数来实现此目的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。