宽恕solr索引

宽恕solr索引,solr,Solr,solr是否有可能以一种更容易理解的方式索引文档 目前,如果我试图索引不完全符合模式的数据,我总是会得到SolrException。如果solr能够为文档编制索引并为不正确的字段打印一个异常,那就更好了 如果您有权访问solr正在运行的服务器,并且可以看到solr提供此信息的日志。您可以将一个设置放在模式中,该设置捕获下载中示例中可以找到的所有特定类型 catchall字段,包含所有其他可搜索文本字段(已实现 在此架构中进一步通过copyField <field name="text

solr是否有可能以一种更容易理解的方式索引文档


目前,如果我试图索引不完全符合模式的数据,我总是会得到SolrException。如果solr能够为文档编制索引并为不正确的字段打印一个异常,那就更好了

如果您有权访问solr正在运行的服务器,并且可以看到solr提供此信息的日志。您可以将一个设置放在模式中,该设置捕获下载中示例中可以找到的所有特定类型

catchall字段,包含所有其他可搜索文本字段(已实现 在此架构中进一步通过copyField

   <field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>

对@Si Philp的答案进行一些扩展。如果您查看Solr发行版附带的示例,您将看到以下条目:

<!-- uncomment the following to ignore any fields that don't already match an existing 
    field name or dynamic field, rather than reporting them as an error. 
    alternately, change the type="ignored" to some other type e.g. "text" if you want 
    unknown fields indexed and/or stored by default --> 
<!--dynamicField name="*" type="ignored" multiValued="true" /-->

<!-- since fields of this type are by default not stored or indexed,
     any data added to them will be ignored outright.  --> 
<fieldtype name="ignored" stored="false" indexed="false" multiValued="true"
  class="solr.StrField" />


这将在您的架构中为尚未定义的任何字段创建一个动态定义,这些字段将被忽略。但是,它不会为您提供任何被忽略字段/值的指示器。

IMHO您应该尝试修复索引过程……也许您最好使用无架构搜索,如@Mauricio Scheffer:你说得对,但我的数据基础很大,有时甚至有点不一致。所以我不能保证错误的数据是通过solr传递的。如果solr能帮我处理的话,那就容易多了。@Paul Dixon:谢谢你的想法,但出于政治原因,我不能这样做谢谢你的回答,但我不知道这如何解决我的问题.catchall字段不会在出现错误时接管。在我的数据库中,我有一个字段应该只出现一次,但在某些不一致的数据集中,它定义了两次。因此,我不想只忽略第二个值或忽略整个字段并为文档编制索引。我可以轻松地将该字段设置为多个,但我不喜欢这样。你会喜欢吗第一步是查看日志,因为这将为您提供所需的信息。日志将告诉您哪个字段抛出错误,以及为什么数据类型不匹配。谢谢您的回复。我的schema.xml中已经有了这一点,但这并不能解决任何多值或错误的字段类型(字符串->整数)这类问题。我不知道Solr中有任何东西可以为您处理这些类型的错误。Solr不是一个数据验证工具,它假设您在加载数据之前正在处理这些类型的问题。在将数据提交给Solr进行索引之前,您需要自己考虑这些类型的问题。