исключить определенный путь из всех пользовательских поисков

К сожалению, в нашем репозитории везде есть специальная папка с именем "_archive". Эта папка имеет свое назначение. Но: при поиске контента/документов мы хотим исключить его и любой контент ниже "_archive".

Итак, я хочу исключить путь и его элемент из всех пользовательских поисков. Синтаксис прост с fts:

your_query AND -PATH:"//cm:_archive//*"

для тестирования: https://www.docdroid.net/RmKj9gB/search-test.pdf.html возьмите pdf, дважды поместите его в репозиторий:

  • /some_random_path/search-test.pdf
  • /some_random_path/_archive/search-test.pdf

В node-browser все работает как положено:

TEXT:"HODOR" AND -PATH:"//cm:_archive//*"
= 1 result

TEXT:"HODOR"
= 2 results

Итак, моя идея заключалась в том, чтобы отредактировать search.get.config.xml и добавить исключение в список свойств:

<search>
    <default-operator>AND</default-operator>
    <default-query-template>%(cm:name cm:title cm:description ia:whatEvent
        ia:descriptionEvent lnk:title lnk:description TEXT TAG) AND -PATH:"//cm:_archive//*"
    </default-query-template>
</search>

Но это не работает, как задумано! Как только я использую «текст:» или «имя:» в поле поиска, исключение, похоже, игнорируется.

Какой еще вариант у меня есть? В основном просто хочу добавить исключение в базовый запрос после использования шаблона запроса по умолчанию.

Версия Alfresco Community 5.0.d

Спасибо!


person user1429166    schedule 26.05.2016    source источник
comment
У меня всегда были проблемы с производительностью при использовании запросов PATH, а у вас нет? Насколько велик ваш репо, примерно?   -  person Lista    schedule 26.05.2016
comment
вики говорят, что поиск может замедлиться, и вы можете увеличить размер кеша. но у меня еще не было проблем с этим. Я запускаю это в среде разработки с 5 ГБ контента.   -  person user1429166    schedule 27.05.2016


Ответы (1)


Я думаю, вы ошибаетесь, для чего предназначены шаблоны запросов. Взгляните на Вики.

То, что вы в основном делаете, это программно говорите, что у меня есть ключевое слово, и я хочу сопоставить ключевые слова со следующими полями метаданных.

По умолчанию оно будет соответствовать cm:name cm:title cm:description и т. д. Это можно изменить на настраиваемое поле или, в других случаях, на ALL.

Таким образом, добавление дополнительного AND или здесь чего-либо не сработает, потому что это не фактический запрос, который будет построен. Я могу подробнее рассказать о шаблонах запросов, но это не принесет вам никакой пользы.

В вашем случае вам нужно будет изменить веб-скрипт search.get Alfresco и метод с именем function getSearchResults(params) в search.lib.js (который импортируется).

Где-то в конце метода он сделает следующее:

ftsQuery = '(' + ftsQuery + ') AND -TYPE:"cm:thumbnail" AND -TYPE:"cm:failedThumbnail" AND -TYPE:"cm:rating" AND -TYPE:"st:site"' + ' AND -ASPECT:"st:siteContainer" AND -ASPECT:"sys:hidden" AND -cm:creator:system AND -QNAME:comment\\-*';

Просто добавьте к нему свой путь к запросу, и это будет сделано.

person Tahir Malik    schedule 26.05.2016
comment
Я использую сообщество 5.0.d - у меня нет упомянутого метода в search.get.js - person user1429166; 26.05.2016
comment
Метод находится в search.lib.js, search.get.js выполняет импорт. - person Tahir Malik; 26.05.2016
comment
Над какой версией вы работаете? Вы уверены, что это работает для 5.0.d? - person user1429166; 27.05.2016
comment
Похоже, что в 5.0.d линия выглядит немного иначе. ftsQuery = '(' + ftsQuery + ') AND -TYPE:"cm:thumbnail" AND -TYPE:"cm:failedThumbnail" AND -TYPE:"cm:rating" AND -TYPE:"st:site"' + ' AND -ASPECT:"st:siteContainer" AND -ASPECT:"sys:hidden" AND -cm:creator:system AND -QNAME:comment\\-*'; - person Axel Faust; 27.05.2016
comment
Пфф @ user1429166 ты действительно туда собираешься? Используйте Total Commander или что-то еще и найдите search.lib.js в файле jar. Нам действительно нужно делать вашу работу за вас..... В этом случае файл находится в alfresco-remote-api-5.0.d.jar - person Tahir Malik; 27.05.2016
comment
@AxelFaust, мой плохой, я скопировал это, вероятно, из другой версии Alfresco. - person Tahir Malik; 27.05.2016