У меня есть несколько вопросов о том, как индекс в Alfresco One работает с транзакционными запросами.
- Мы используем Alfresco 5.0.2, и в документации я могу прочитать следующее: «При обновлении базы данных вы можете добавить необязательные индексы для поддержки функции запроса метаданных».
Предположим, что в моем 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 узнает, какие свойства я хочу проиндексировать в БД? Прочитать мой model.xml и проиндексировать только те проиндексированные свойства, которые я там указываю? Индексировать все пользовательские свойства? Или мне нужно создать скрипт для добавления этих новых индексов?
Я прочитал скрипт metadata-query-indexes.sql, но не понимаю, как его переписать, чтобы добавить новый индекс для моего свойства. Если нужен этот скрипт, не могли бы вы привести пример со свойством doc:myDoc, которое я написал ранее, пожалуйста?
- Другой вопрос касается синтаксиса запроса, который не поддерживается БД и идет напрямую в SOLR.
Я читал, что PATH, SITE, ANCESTOR, OR, любые свойства d:content, d:boolean или d:any (среди прочего) в вашем запросе, иначе он не будет выполняться для БД. Но я не понимаю, что такое d:content.
Например, запрос (на основе моего пользовательского свойства, написанного ранее) типа TYPE:whatever AND @doc\:level:"value" считается d:content? Этот запрос поддерживается BD или идет в SOLR?
- Я читал также это:
«Любые проверки свойств должны быть выражены в форме, которая означает «проверка идентичного значения», поскольку запрос к БД не предоставляет тех же возможностей токенизации/подобия, что и индекс SOLR. Например, вместо my:property:"value" вам придется use =my:property:"value" и "value" должны быть написаны в правильном регистре, значение хранится в БД."
Это означает, что если я использую =, например, делая =@doc\:level:"value", этот запрос не будет принят в БД и будет отправлен в SOLR? Я не могу найти точное значение в БД?