Solr 索引d:包含内容的内容属性>;32 KB
我有一个Alfresco模型类型,其附加属性类型为Solr 索引d:包含内容的内容属性>;32 KB,solr,alfresco,Solr,Alfresco,我有一个Alfresco模型类型,其附加属性类型为d:content。当我尝试在其中存储大于32 KB的内容时,此属性会导致Solr异常。此属性的当前定义为 <property name="acme:secondContent"> <type>d:content</type> <mandatory>false</mandatory> <index enabled="true"> <atomic>
d:content
。当我尝试在其中存储大于32 KB的内容时,此属性会导致Solr异常。此属性的当前定义为
<property name="acme:secondContent">
<type>d:content</type>
<mandatory>false</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>true</stored>
<tokenised>both</tokenised>
</index>
</property>
更改索引
配置没有帮助,所有索引的变体和我尝试过的子元素都会抛出错误
答案如下:
底层Lucene索引中单个项的最大大小为32776字节,我认为这是硬编码的
如何配置d:content
属性的index
,以便保存和索引大于32 KB的内容
编辑:
在contentModel.xml
中,cm:content
的配置如下:
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>true</tokenised>
</index>
.假设1
如果您的内容包含类似的非常长的术语(长度为32k的单个单词),那么您必须实现自己的Lucene分析器来支持特定类型的文本。这意味着这是一个与默认Lucene实现相关的问题,因为它是硬编码的
假设2
否则,如果您的内容不是按上述方式构建的,我会觉得很奇怪,可能是一个bug。如果您没有使用tokenised=true解决问题,那么在这种情况下,可能的解决方法是更改内容模型,以支持父节点与包含相关文本但使用默认cm:content属性的特定类型节点之间的关联。我的意思是使用你应该解决的关联;)
希望这能有所帮助。解决方案不是在索引中存储完整的文档/部分。因此,在大于32k的大型属性上,尽量避免store=true和tokenize=both/false。如果您的模型声明如下所示,则索引应该可以工作:
<property name="acme:secondContent">
<type>d:content</type>
<mandatory>false</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>true</tokenised>
</index>
</property>
d:内容
假的
真的
假的
真的
缺点:在我的测试中,我不得不删除整个索引。我不足以删除solr中的缓存模型,将
设置为true应该会有所帮助。该字段的内容是什么?如果你只有标记形式,你会失去任何东西吗?将其设置为字符串形式将允许排序和刻面。该字段需要吗?不,不需要排序和刻面。我将尝试更多的组合。是否有任何原因不能扩展包含d:content属性的cm:content?是的。该类型扩展了cm:content
,以存储整个内容。我有一个自定义代码,它获取部分内容并将其存储在我上面描述的属性中。考虑一个多部分电子邮件正文,我希望在允许访问部分的同时存储整个正文。我不是solr专家,但我觉得这个问题与文档可能必须作为一个整体存储在索引(用于调试)中的最大字节数的变化有关。请检查您在模型中是否定义了false,以仅存储实际索引值,而不存储顶部的整个文本。可以排除hypsethesis 1。错误发生在正常的lorem ipsum文本中。我没有在hyothesis 2中建议的更改内容模型的选项。现有Alfresco 4.2安装必须迁移到5.0。我会在露天的JIRA放一只虫子。
<property name="acme:secondContent">
<type>d:content</type>
<mandatory>false</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>true</tokenised>
</index>
</property>