Bei der Implementierung der einfachen Suche handelt es sich um die Materialien vom Adobe Summit Lab „AEM Search Demystified“. Diese Seite enthält die Materialien dieses Labs. Eine Lab-Führung finden Sie in der Lab-Arbeitsmappe im Präsentationsabschnitt dieser Seite.
Bei den folgenden Kapitel-Links wird davon ausgegangen, dass die anfänglichen Pakete in AEM Author unterhttp://localhost:4502
installiert sind.
Korrekturen und Erläuterungen aus den Lab-Diskussionen und Antworten auf weitere Fragen von Teilnehmerinnen und Teilnehmern.
Wie lässt sich eine Neuindizierung stoppen?
Die Neuindizierung kann über IndexStats MBean gestoppt werden, verfügbar über AEM Web Console > JMX.
abortAndPause()
aus, um die Neuindizierung abzubrechen. Dadurch wird der Index für eine weitere Neuindizierung so lange gesperrt, bis resume()
aufgerufen wird.resume()
wird der Indizierungsprozess neu gestartet.Wie können Oak-Indizes mehrere Mandanten unterstützen?
Oak unterstützt das Platzieren von Indizes überall in der Inhaltsstruktur, und diese Indizes indizieren nur innerhalb dieser Unterstruktur. Beispielsweise kann /content/site-a/oak:index/cqPageLucene
erstellt werden, um Inhalte nur unter /content/site-a
zu indizieren.
Ein gleichwertiger Ansatz ist die Anwendung der Eigenschaften includePaths
und queryPaths
auf einen Index unter /oak:index
. Zum Beispiel:
/oak:index/siteAcqPageLucene@includePaths=/content/site-a
/oak:index/siteAcqPageLucene@queryPaths=/content/site-a
Bei diesem Ansatz sind folgende Aspekte zu berücksichtigen:
/oak:index/cqPageLucene
) indizieren EBENFALLS die Daten, was zu einer doppelten Erfassung und entsprechenden Kosten bei der Festplattennutzung führt.Wo ist eine Liste aller verfügbaren Analyzer?
Oak macht eine Reihe von Lucene-bereitgestellten Analyzer-Konfigurationselementen zur Verwendung in AEM verfügbar.
Wie kann in derselben Abfrage nach Seiten und Assets gesucht werden?
In AEM 6.3 gibt es nun die Möglichkeit, mehrere Knotentypen in derselben bereitgestellten Abfrage abzufragen. Ein Beispiel ist die folgende QueryBuilder-Abfrage. Beachten Sie, dass jede Unterabfrage in einen eigenen Index aufgelöst werden kann. Hier wird etwa die Unterabfrage cq:Page
in /oak:index/cqPageLucene
und die Unterabfrage dam:Asset
in /oak:index/damAssetLucene
aufgelöst.
group.p.or=true
group.1_group.type=cq:Page
# add all page restrictions to this group
group.2_group.type=dam:Asset
# add all asset restrictions to this group
Daraus ergeben sich die folgende Abfrage und der folgende Abfrageplan:
QUERY:(//element(*, cq:Page) | //element(*, dam:Asset))
PLAN: [cq:Page] as [a] /* lucene:cqPageLucene(/oak:index/cqPageLucene) *:* */ union [dam:Asset] as [a] /* lucene:damAssetLucene(/oak:index/damAssetLucene) *:* */
Untersuchen Sie die Abfrage und Ergebnisse über den QueryBuilder-Debugger und das AEM-Chrome-Plug-in.
Wie kann in derselben Abfrage über mehrere Pfade hinweg gesucht werden?
In AEM 6.3 gibt es nun die Möglichkeit, gewünschte Informationen über mehrere Pfade hinweg in derselben bereitgestellten Abfrage abzufragen. Ein Beispiel ist die folgende QueryBuilder-Abfrage. Beachten Sie, dass jede Unterabfrage in einen eigenen Index aufgelöst werden kann.
group.p.or=true
group.1_group.type=cq:Page
group.1_group.path=/content/docs/en/6-2
# add all page restrictions to this group
group.2_group.type=cq:Page
group.2_group.path=/content/docs/en/6-3
# add all asset restrictions to this group
Daraus ergeben sich die folgende Abfrage und der folgende Abfrageplan:
QUERY: (/jcr:root/content/docs/en/_x0036_-2//element(*, cq:Page) | /jcr:root/content/docs/en/_x0036_-3//element(*, cq:Page))
PLAN: [cq:Page] as [a] /* traverse "/content/docs/en/6-2//*" where isdescendantnode([a], [/content/docs/en/6-2]) */ union [cq:Page] as [a] /* traverse "/content/docs/en/6-3//*" where isdescendantnode([a], [/content/docs/en/6-3]) */
Untersuchen Sie die Abfrage und Ergebnisse über den QueryBuilder-Debugger und das AEM-Chrome-Plug-in.