Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr 索引d:包含内容的内容属性>;32 KB_Solr_Alfresco - Fatal编程技术网

Solr 索引d:包含内容的内容属性>;32 KB

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>

我有一个Alfresco模型类型,其附加属性类型为
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>