Solr错误:Archetypes交易记录太大了省略'searchwords'

时间:2016-06-16 11:54:19

标签: plone

我在Plone 4.2.6系统上运行Solr 5.1.0。 索引到目前为止工作,但每次我在控制台上都会出现相同的错误: 2016-06-01 10:55:57 WARNING Archetypes Transaction note too large omitting 'searchwords' field missing value on instance '/path/to/document/or/image'; setting default value. 我将字段searchwords放在我们当前使用的collective.solr插件中。它用于提升某些查询。不幸的是,我无法找到使用它的确切代码行以及我可以阻止它被使用的地方。

有人可以向我解释这个collective.solr插件可以被操作和/或停用的方式吗?

1 个答案:

答案 0 :(得分:3)

首先,字段searchwords是collective.solr中的一个重要字段。该字段用于提升查询时间(使某些特定内容比其他内容更重要。通常类似searchwords:{value}^1000)的内容存储在默认查询中。

现在警告: Archetypes尝试初始化字段searchwords,因为它在数据库中的对象上缺失(它在模式上是新的,由at.schemaextender提供)。这是一个自动化的过程,我很确定你不想在这个级别上混淆Archetypes; - )

https://github.com/plone/Products.Archetypes/blob/e9ad0f4e76544b7890835ca93d25adeca4fc064f/Products/Archetypes/Schema/init.py#L491中的某处设置init值后,它会扩展事务节点(这是您在Undo - > manage_UndoForm下的ZMI中看到的内容。交易记录的长度有限65535(在我们的某个软件包中找到此号码 - > https://github.com/4teamwork/ftw.upgrade/commit/44efe457020f69ce00dff613252a090c291497c7,我们在那里修复了相同的问题并进行了深入挖掘。) 它是通过实现我们自己的TransacationNote来解决的。这可能不是你想要的。

但是,我不确定这是否会阻止您实际提交到数据库?

如何阻止使用searchwords

此功能是Archetypes的硬编码:检查https://github.com/collective/collective.solr/blob/master/src/collective/solr/extender.py#L20以便重新编制索引,尝试访问所有基于AT的内容类型的字段搜索词。

您可以尝试的第一件事是从您的solr配置中删除searchwords索引。例如,在https://github.com/collective/collective.solr/blob/master/solr.cfg#L69

您需要删除该行..

name:searchwords type:string stored:true multivalued:true

来自你的solr配置的

。 重建solr(您可以删除solr部分)并重新启动solr。然后在您的plone根上调用sorl-maintenance/reindex,它可能不再访问此索引(但我不确定它在内部的作用。)

如果这没有帮助您需要修改collective.solr本身(删除索引和字段)。或者甚至更好地使两个字段可配置并在集体上制作特征PR。 solr: - )