我在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插件可以被操作和/或停用的方式吗?
答案 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。然后在您的plone根上调用sorl-maintenance/reindex
,它可能不再访问此索引(但我不确定它在内部的作用。)
如果这没有帮助您需要修改collective.solr本身(删除索引和字段)。或者甚至更好地使两个字段可配置并在集体上制作特征PR。 solr: - )