Solr 添加文档时出错

has*_*fat 2 solr

我创建了一个名为“fuzzy”的 solr 核心,但是我无法将文档添加到核心,我尝试使用以下 URL 添加文档:

\n\n
http://localhost:8983/solr/Fuzzy/update?stream.body=<add><doc><field%20name="id">1</field><field%20name="original">M\xc3\xbcnchen</field><field%20name="mutation">Munchen</field></doc></add>&commit=true\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我不断收到消息L

\n\n
\n

未知的 UpdateRequestProcessorChain:将未知字段添加到架构中

\n
\n\n

我不确定为什么会收到此消息,在我的配置文件中我有:

\n\n

<schemaFactory class="ClassicIndexSchemaFactory"/>

\n\n

和 schema.xml :

\n\n
<?xml version="1.0" encoding="UTF-8" ?>\n<schema name="WikiData" version="1.5">\n    <field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />\n    <field name="original" type="text_general" indexed="true" stored="true" />\n    <field name="mutation" type="text_general" indexed="true" stored="true" />\n    <field name="_version_" type="long" indexed="true" stored="true"/>\n    <uniqueKey>id</uniqueKey>\n\n    <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>\n    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>\n    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="false">\n      <analyzer type="index">\n        <tokenizer class="solr.StandardTokenizerFactory"/>\n        <filter class="solr.LowerCaseFilterFactory"/>\n        <filter class="solr.PorterStemFilterFactory"/>\n      </analyzer>\n      <analyzer type="query">\n        <tokenizer class="solr.StandardTokenizerFactory"/>\n        <filter class="solr.LowerCaseFilterFactory"/>\n        <filter class="solr.PorterStemFilterFactory"/>\n      </analyzer>\n    </fieldType>\n</schema>\n
Run Code Online (Sandbox Code Playgroud)\n\n

solrconfig.xml:

\n\n
<?xml version="1.0" encoding="UTF-8" ?>\n<config>\n  <luceneMatchVersion>5.3.1</luceneMatchVersion>\n  <lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\\.jar" />\n  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\\d.*\\.jar" />\n\n  <lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\\.jar" />\n  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\\d.*\\.jar" />\n\n  <lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\\.jar" />\n  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\\d.*\\.jar" />\n\n  <lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\\.jar" />\n  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\\d.*\\.jar" />\n  <dataDir>${solr.data.dir:}</dataDir>\n  <directoryFactory name="DirectoryFactory"\n                    class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>\n  <codecFactory class="solr.SchemaCodecFactory"/>\n\n  <schemaFactory class="ClassicIndexSchemaFactory"/>\n  <indexConfig>\n    <lockType>${solr.lock.type:native}</lockType>\n  </indexConfig>\n  <jmx />\n  <updateHandler class="solr.DirectUpdateHandler2">\n    <updateLog>\n      <str name="dir">${solr.ulog.dir:}</str>\n      <int name="numVersionBuckets">${solr.ulog.numVersionBuckets:65536}</int>\n    </updateLog>\n    <autoCommit>\n      <maxTime>${solr.autoCommit.maxTime:15000}</maxTime>\n      <openSearcher>false</openSearcher>\n    </autoCommit>\n    <autoSoftCommit>\n      <maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime>\n    </autoSoftCommit>\n  </updateHandler>\n\n  <query>\n    <maxBooleanClauses>1024</maxBooleanClauses>\n    <filterCache class="solr.FastLRUCache"\n                 size="512"\n                 initialSize="512"\n                 autowarmCount="0"/>\n\n    <queryResultCache class="solr.LRUCache"\n                      size="512"\n                      initialSize="512"\n                      autowarmCount="0"/>\n\n    <documentCache class="solr.LRUCache"\n                   size="512"\n                   initialSize="512"\n                   autowarmCount="0"/>\n    <cache name="perSegFilter"\n           class="solr.search.LRUCache"\n           size="10"\n           initialSize="0"\n           autowarmCount="10"\n           regenerator="solr.NoOpRegenerator" />\n    <enableLazyFieldLoading>true</enableLazyFieldLoading>\n\n    <queryResultWindowSize>20</queryResultWindowSize>\n    <queryResultMaxDocsCached>200</queryResultMaxDocsCached>\n    <listener event="newSearcher" class="solr.QuerySenderListener">\n      <arr name="queries">\n      </arr>\n    </listener>\n    <listener event="firstSearcher" class="solr.QuerySenderListener">\n      <arr name="queries">\n      </arr>\n    </listener>\n    <useColdSearcher>false</useColdSearcher>\n    <maxWarmingSearchers>2</maxWarmingSearchers>\n\n  </query>\n  <requestDispatcher handleSelect="false" >\n    <requestParsers enableRemoteStreaming="true"\n                    multipartUploadLimitInKB="2048000"\n                    formdataUploadLimitInKB="2048"\n                    addHttpRequestToContext="false"/>\n    <httpCaching never304="true" />\n  </requestDispatcher>\n  <requestHandler name="/select" class="solr.SearchHandler">\n\n  <admin>\n    <defaultQuery>*:*</defaultQuery>\n  </admin>\n\n</config>\n
Run Code Online (Sandbox Code Playgroud)\n

Dav*_*ack 5

文档建议应复制的默认托管模式schema.xml包括不使用托管模式时不需要的更新处理器请求链。(或者至少在 6.1.0 中是这样)

应从 solrconfig.xml 中删除或注释掉以下行:

<initParams path="/update/**">
  <lst name="defaults">
    <str name="update.chain">add-unknown-fields-to-the-schema</str> 
  </lst>
</initParams>
Run Code Online (Sandbox Code Playgroud)

另一种选择可能是继续使用托管模式而不是经典方法,但将其设置为不可变,尽管我还没有测试过这个,例如

<schemaFactory class="ManagedIndexSchemaFactory">
   <bool name="mutable">false</bool>
   <str name="managedSchemaResourceName">managed-schema</str>
</schemaFactory>
Run Code Online (Sandbox Code Playgroud)