Запрос Lucene, который исключает теги XML в полнотекстовом поиске - PullRequest
0 голосов
/ 23 марта 2011

В alfresco мне нужно написать запрос lucene таким образом, чтобы он исключал / исключал теги xml из содержимого во время поиска.

Пример Если поиск по файлу try.xml выполняется по содержимому, мойпоиск не должен искать теги xml.

try.xml
<sample>This is an example</sample>

Если я задаю текст поиска как «sample», он не должен возвращать имя файла «try.xml».Итак, как я могу добиться этого?

Редактировать

Я пробовал с приведенным ниже запросом без изменений.

@cm\:name:"try*" -TEXT:"<*>" +TEXT:"sample"

Что не так в приведенном выше запросе.Я просто попытался получить имя файла, которое начинается с «try» и удаляет текст внутри тега, а также пытается найти текст «sample».

Ответы [ 3 ]

1 голос
/ 06 апреля 2011

По умолчанию Alfresco обрабатывает XML-файлы как обычный текст и индексирует xml-теги как слова, поэтому их можно найти с помощью полнотекстового поиска. Содержимое XML обрабатывается StringExtractingContentTransformer в Alfresco, который преобразует текст / xml в текст / обычный текст перед его индексацией.

Чтобы проверить, какие трансформаторы зарегистрированы в вашей установке Alfresco, вы можете проверить http://localhost:8080/alfresco/service/mimetypes?mimetype=text/xml#text/xml

Чтобы предотвратить индексацию атрибутов xml, вы должны написать специальный преобразователь, который удаляет теги XML. См. http://wiki.alfresco.com/wiki/Content_Transformations для введения в преобразование контента с Alfresco. Самым простым способом было бы интегрировать утилиту командной строки, которая преобразует XML-файл в текст, или вы могли бы реализовать класс Java, который выполняет преобразование.

0 голосов
/ 02 апреля 2011

Не могли бы вы просто исключить mimetype xml? (См. http://wiki.alfresco.com/wiki/Search#Finding_nodes_by_content_mimetype для синтаксиса)

Полагаю, вы, возможно, захотите также исключить html (то есть исключите text / html и text / xml), что помешало бы вам получить какие-либо узлы в результатах, содержащие теги xml.

0 голосов
/ 25 марта 2011

Нет стандартного способа сделать то, что вам нужно, вот выдержка из официальной документации :

Подстановочные знаки запросов Подстановочные знаки запросов используя * и? поддержка как условия и фразы. Для токенизированных полей образец соответствия не может быть точным, как все символы без токенов (пробел, пунктуация и т. д.) будут потеряны и рассматривается как равный.

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

...