我正在使用 Solr 6.5.0 ,我遇到了一个场景,我必须索引文档中可能包含多种语言的数据字段。
我正在尝试为每种语言使用单独的字段,我必须将特定语言的数据索引到为该语言定义的相应字段。
我添加了以下配置和架构更改:
Solr config:
<requestHandler name="/update" class="solr.UpdateRequestHandler">
<lst name="defaults">
<str name="update.chain">langid</str>
</lst>
</requestHandler>
<updateRequestProcessorChain name="langid">
<processor class="org.apache.solr.update.processor.TikaLanguageIdentifierUpdateProcessorFactory">
<str name="langid.fl">title</str>
<str name="langid.langField">lang</str>
<str name="langid.fallback">en</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
架构:
<field name="code" type="string" indexed="true" stored="true"/>
<field name="title" type="string" indexed="true" stored="true"/>
<field name="content_english" type="text_english" indexed="true" stored="true"/>
<field name="content_french" type="text_french" indexed="true" stored="true"/>
<field name="content_spanish" type="text_spanish" indexed="true" stored="true"/>
输入xml:
<add>
<doc>
<field name="code">one</field>
<field name="title">Adventures</field>
<field name="content_english">Especially the fuzzy search is very welcome; Solr really is a beautiful engine and it’s incredibly fast: millions of documents are no problem. Of course, if your servers capacities are configured correctly.</field>
</doc>
<doc>
<field name="code">two</field>
<field name="title">Aventures</field>
<field name="content_french">Surtout la recherche floue est très bienvenue; Solr est vraiment un beau moteur et c'est incroyablement rapide: des millions de documents ne posent aucun problème. Bien sûr, si les capacités de vos serveurs sont configurées correctement.</field>
</doc>
<doc>
<field name="code">three</field>
<field name="title">Aventuras</field>
<field name="content_spanish">Especialmente la búsqueda difusa es muy bienvenida; Solr realmente es un motor hermoso y es increíblemente rápido: millones de documentos no son ningún problema. Por supuesto, si las capacidades de los servidores están configuradas correctamente.</field>
</doc>
</add>
每当我更新核心时,我都会收到以下错误:
C:\solr-6.5.0\example\exampledocs>java
-Durl=http://localhost:8983/solr/autodetect/update?update.chain=langid -jar post.jar multilanguage.xml SimplePostTool version 5.0.0
将文件发布到[base] url http://localhost:8983/solr/autodetect/update?update.chain=langid使用 content-type application / xml ... POST文件multilanguage.xml到 [base] SimplePostTool:警告:Solr返回错误#400(错误 请求)为url: http://localhost:8983/solr/autodetect/update?update.chain=langid SimplePostTool:警告:响应:4006org.apache.solr.common.SolrExceptionorg.apache.solr.common.SolrExceptionDocument缺少必需的uniqueKey字段:id400 SimplePostTool:警告: 读取响应时出现IOException:java.io.IOException:Server 返回HTTP响应代码:400为URL: http://localhost:8983/solr/autodetect/update?update.chain=langid 1 索引的文件。委托Solr索引更改为 http://localhost:8983/solr/autodetect/update?update.chain=langid ... 花费的时间:0:00:00.179
答案 0 :(得分:1)
错误:文档中缺少ID字段。
用于唯一标识每个文档的 id
在模式文件中指定,如下所示。
<uniqueKey>id</uniqueKey>
每个文档必须且应该具有指定为唯一键的字段。
包含所有文档的ID字段并进行检查。 例如:
<doc>
<field name="id">001</field>
<field name="code">one</field>
<field name="title">Adventures</field>
<field name="content_english">Especially the fuzzy search is very welcome; Solr really is a beautiful engine and it’s incredibly fast: millions of documents are no problem. Of course, if your servers capacities are configured correctly.</field>
</doc>
答案 1 :(得分:0)
你看错了吗?您的文档没有名为&#39; id&#39;的必填字段的值。你要么必须给每个人一个id:
<add>
<doc>
<field name="code">one</field>
<field name="id">1</field>
<field name="title">Adventures</field>
<field name="content_english">Especially the fuzzy search is very welcome; Solr really is a beautiful engine and it’s incredibly fast: millions of documents are no problem. Of course, if your servers capacities are configured correctly.</field>
</doc>
<doc>
<field name="code">two</field>
<field name="id">2</field>
<field name="title">Aventures</field>
<field name="content_french">Surtout la recherche floue est très bienvenue; Solr est vraiment un beau moteur et c'est incroyablement rapide: des millions de documents ne posent aucun problème. Bien sûr, si les capacités de vos serveurs sont configurées correctement.</field>
</doc>
<doc>
<field name="code">three</field>
<field name="id">3</field>
<field name="title">Aventuras</field>
<field name="content_spanish">Especialmente la búsqueda difusa es muy bienvenida; Solr realmente es un motor hermoso y es increíblemente rápido: millones de documentos no son ningún problema. Por supuesto, si las capacidades de los servidores están configuradas correctamente.</field>
</doc>
</add>
或者您可以将Solr配置为在没有值的情况下自动分配值。