我对Alfresco One中的索引如何处理事务性查询有一些疑问。
假设在我的model.xml中我添加了一个这样的自定义属性:
<type name="doc:myDoc">
<title>Document</title>
<parent>cm:content</parent>
<properties>
<property name="doc:level">
<title>Level</title>
<type>d:text</type>
<mandatory>true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
</property>
...
</properties>
</type>
我的alfresco-global.properties上有这些集
solr.query.cmis.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
solr.query.fts.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
system.metadata-query-indexes.ignored=false
我的第一个问题是...... Alfresco如何知道我想在DB上索引哪些属性?读取我的model.xml并仅索引我在那里指定的索引属性?索引所有自定义属性?或者我需要创建一个脚本来添加这些新索引?
我读了脚本metadata-query-indexes.sql,但我不明白如何重写它以便为我的属性添加新索引。如果有必要这个脚本,你能给我一个我之前写过的doc:myDoc属性的例子吗?
我在您的查询中读取了PATH,SITE,ANCESTOR或者任何d:content,d:boolean或d:any(以及其他)属性,或者它不能对数据库执行。但我不明白d:内容是什么。
例如,一个查询(基于我之前编写的自定义属性),如TYPE:无论AND和@doc \:level:“value”被认为是d:content? BD支持此查询还是转到SOLR?
“任何属性检查必须以”相同值检查“的形式表示,因为查询DB不提供与SOLR索引相同的标记化/相似性功能。例如,而不是my:property:”value“you' d必须使用= my:property:“value”和“value”必须以适当的情况写入,该值存储在DB中。“
这意味着如果我使用=,例如执行= @ doc \:level:“value”,则不会在DB上接受此查询并转到SOLR?我无法在DB上搜索确切的值?
答案 0 :(得分:0)
可以在这里找到一个很好的解释。
https://community.alfresco.com/people/andy1/blog/2017/06/19/explaining-eventual-consistency
当对存储库进行更改时,SOLR会通过它们获取它们 投票机制。对索引引擎进行了必要的更新 保持两者同步。这需要一些时间。索引引擎可以 很好地处于反映一些先前版本的状态 库。它最终会赶上并与之保持一致 存储库 - 假设它不会永远改变。