Я хочу найти точное сочетание слов во всех узлах в aem с помощью построителя запросов. Пытаясь отладить запрос http://localhost:4502/libs/cq/search/content/querydebug.html, он возвращает мне результаты, которые не соответствуют моему запросу. Например, если вы хотите найти «foo bar» во всех узлах, и мне нужно получить все узлы, содержащие «Foo Bar», «foo Bar», «Foo bar», «FOO BAR», но не только «foo» и только «бар», а не «foo-bar». Запрос на обслуживание выполняется с помощью QueryBuilder.Aem fulltextsearch
ответ
Если вам нужны все виды комбинаций для «Foo бар», то вы должны запросить:
fulltext=foo bar
Вы получите только первые 10 результатов. Для того, чтобы получить все, вам нужно:
p.limit=-1
Вы можете указать путь:
path=/content/website/
Посетите Adobe Query Builder API для получения дополнительной информации.
За кулисами AEM создает запрос xpath и затем выполняет его. Затем для любой части запроса, которая не сопоставляется с xpath, она просматривает результаты и фильтрует их.
Вы также должны подумать о том, есть ли свойство для сопоставления в отличие от любого текста. Это даст вам гораздо лучшие результаты, так как вы хотите точности. Прямо сейчас вы бросаете слишком широкую сеть, и я думаю, вам стоит подумать о том, чтобы ограничиться, если ничего, кроме служебных соображений. Просто предложение.
Вы скажете, что результаты не соответствуют вашему запросу, можете ли вы дать нам некоторое представление о том, что возвращается? И можете ли вы задать свой фактический запрос здесь. Это облегчит вам помощь.
QueryBuilder полезен, когда вы пытаетесь выполнить запрос, похожий на SQL, где вы выполняете поиск по свойству и его значению. Полнотекстовые возможности поиска интерфейса отладки запросов очень ограничены, как вы уже испытали.
Однако помните, что AEM использует базовый индекс Lucene и/или Solr, и это дает возможность выполнить собственный запрос solr/lucene.
- Во-первых, создать встроенный индекс Solr (встроенный достаточно для развития локального экземпляра AEM), как упоминалось в разделе «Настройка AEM со встроенным ГУМЗ сервера» в https://docs.adobe.com/docs/en/aem/6-0/deploy/upgrade/queries-and-indexing.html. Это вызовет индексацию вашего JCR-контента.
- Как только индексирование завершено (как видно из журналов), вы можете выполнять собственные запросы, используя интерфейс запроса crx/de. Пример запроса:
select [jcr:path] from [nt:base] where native('solr', '<filter>?<solr_query_goes_here>'
. Совершенно очевидно, что вам нужно быть знакомым с solr-запросами. Благодаря следующей слайдовой слайде (слайд 50 рассказывает о собственных запросах в AEM) http://www.slideshare.net/justinedelson/demystifying-oak-search
Поддержка AEM для собственных запросов solr немного неоднородна. Возможно, вам придется вручную отредактировать XML-файл схемы SOLR (созданный в папке crx-quickstart), чтобы добавить дополнительные фильтры, настраиваемые поля и т. Д. Мы успешно настроили solr в AEM для выполнения пространственного поиска с использованием вышеуказанного метода.
нет, вам не нужно настраивать встроенный индекс solr. Поиск lucene поддерживается без какой-либо дополнительной настройки и подходит для большинства случаев использования. – deveth0
это минимальный пример, который обеспечивает полнотекстовый поиск:
Query query = queryBuilder.createQuery(...);
// limit path
Predicate path = new Predicate(PathPredicateEvaluator.PATH);
path.set(PathPredicateEvaluator.PATH, "/content/where/ever);
query.getPredicates().add(path);
// Fulltext
Predicate fulltextSearch = new Predicate(FulltextPredicateEvaluator.FULLTEXT);
fulltextSearch.set(FulltextPredicateEvaluator.FULLTEXT, "foo bar");
fulltextSearch.set(FulltextPredicateEvaluator.REL_PATH, "jcr:content");
query.getPredicates().add(fulltextSearch);
// can I haz excerpt?
query.setExcerpt(true);
// Paging?
query.setStart(...);
query.setHitsPerPage(-1);
Примечание: это не требуется, чтобы настроить индекс Solr или любой другой, вы должны быть хорошо из коробки. Но если вы ограничиваете поиск конкретными полями, вы должны создать индексную запись в дубе: index. Вы можете найти отличный чит-лист here.
Я не уверен, если это поможет.
, но для получения всех комбинаций узлов, у которых есть текст, который я ищу, я использую jcr:like
в xpath.
, например, если я хочу, чтобы найти все узлы, которые имеют любое свойство с Foo bar
его стоимостью или ключом, то мой запрос выглядит следующим образом:
/jcr:root/content/yourpath//*[jcr:like(\*/, '%FOO bar%')]
Вы не получите, что гибкость в QueryBuilder, но вы можете все еще получите то, что вы хотите, используя JCR-SQL2.
Следующий запрос вернет все записи с помощью «Foo Bar», «foo bar», «foo Bar», «Foo bar», но не «foo», «bar», «foo-bar», когда ваше значение «foo bar».
SELECT * FROM [nt:unstructured] WHERE ISDESCENDANTNODE('/jcr:root/content/yourpath') AND LOWER([prop]) LIKE "%foo bar%" ORDER BY [cq:lastModified] desc
Просто убедитесь, что при проверке значений в хранилище, отправить значениев нижнем регистре для учета регистра поиска.
Для регистрозависимой поиска вы можете использовать:
SELECT * FROM [nt:unstructured] WHERE ISDESCENDANTNODE('/jcr:root/content/yourpath') AND [prop] LIKE "%foo bar%" ORDER BY [cq:lastModified] desc
- 1. FullTextSearch в MYSql
- 2. возникли проблемы с FullTextSearch
- 3. Linq и FullTextSearch - Asp.Net
- 4. Silverstripe fulltextsearch on custom field
- 5. AEM 6.1: ACS AEM commons bundle - multifield
- 6. Обновление с Aem 5.6 до AEM 6
- 7. AEM DependencyResolutionException
- 8. Кодирование AEM и перенос содержимого из AEM 5.6.1 в AEM 6.1
- 9. AEM :: Обработка ошибок с использованием пакета acs-aem-commons
- 10. Какие три имени автомата AEM запустит AEM в режиме автора?
- 11. Как данные AEM DAM Asset используются в AEM?
- 12. AEM Как упаковать группу пользователей и разрешение в AEM 6
- 13. AEM Solr - Lucene
- 14. Ошибка разрешения ресурса AEM
- 15. Импорт содержимого в AEM
- 16. Отправить форму Servlet AEM
- 17. AEM i18n vs MSM
- 18. AEM 6 :: Динамические вкладки
- 19. Adobe CQ/AEM Информация
- 20. Консолидация AEM clienlibs
- 21. Image Gallery Component AEM
- 22. AEM :: Dispatcher issue
- 23. Контентное слияние AEM
- 24. Служба AEM SQL
- 25. AEM 6.1 LESS версия
- 26. Диалог компонентов AEM TouchUI
- 27. Java AEM Query Builder ||
- 28. Запрос относительно Adobe AEM
- 29. Как очистить формы AEM?
- 30. Ошибка AEM с ExternalLoginModule
Я не знаю, AEM, но если он использует синтаксис запроса Lucene, окружают его в кавычки: '«Foo бар»'. Вы все равно найдете «foo-bar», но при стандартном анализе индексированная форма этого неотличима от «foo bar», так что это изменит ваш анализ и переиндексирование. – femtoRgon