Implementeringshandbok för enkel sökning simple-search-implementation-guide

Den enkla sökimplementeringen är material från Adobe Summit lab AEM Search Demystified. Den här sidan innehåller material från det här labbet. En guidad visning av labbet finns i Lab-arbetsboken i avsnittet Presentation på den här sidan.

Översikt över sökarkitekturen

Presentationsmaterial bookmarks

Bokmärken bookmarks-1

verktyg tools

Kapitel chapters

Kapitel-länkarna nedan förutsätter att Initiala paket är installerade på AEM författare påhttp://localhost:4502

Paket packages

Inledande paket initial-packages

Kapitelpaket chapter-packages

Refererat material reference-materials

Korrigeringar och uppföljning corrections-and-follow-up

Rättelser och förtydliganden från labbdiskussionerna och svar på uppföljningsfrågor från deltagarna.

  1. Hur avbryter jag omindexering?

    Omindexering kan stoppas via IndexStats MBean via AEM Web Console > JMX

  2. Hur kan oak-index stödja flera innehavare?

    Oak har stöd för att placera index genom innehållsträdet, och dessa index indexeras bara inom det underträdet. /content/site-a/oak:index/cqPageLucene kan till exempel bara skapas för indexinnehåll under /content/site-a.

    Ett likvärdigt sätt är att använda egenskaperna includePaths och queryPaths i ett index under /oak:index. Till exempel:

    • /oak:index/siteAcqPageLucene@includePaths=/content/site-a
    • /oak:index/siteAcqPageLucene@queryPaths=/content/site-a

    Följande överväganden bör göras:

    • Frågor MÅSTE ange en sökvägsbegränsning som är lika med indexets sökvägsomfång, eller vara en underordnad där till.
    • Bredare index (till exempel /oak:index/cqPageLucene) indexerar också data, vilket resulterar i duplicerat intag och kostnad för diskanvändning.
    • Kan kräva duplicerad konfigurationshantering (t.ex. lägga till samma indexRules i flera innehavarindex om de måste uppfylla samma frågeuppsättningar)
    • Det här arbetssättet används bäst på AEM Publish-nivå för anpassad webbplatssökning, till exempel AEM författare, eftersom det är vanligt att frågor körs uppåt i innehållsträdet för olika innehavare (till exempel via OmniSearch) - olika indexdefinitioner kan ge olika beteenden baserat enbart på sökvägsbegränsningen.
  3. Var finns en lista över alla tillgängliga analytiker?

    Oak visar en uppsättning lucene-provides analyzer-konfigurationselement som kan användas i AEM.

  4. Hur söker jag efter sidor och Assets i samma fråga?

    Nytt i AEM 6.3 är möjligheten att söka efter flera nodtyper i samma fråga. Följande QueryBuilder-fråga. Observera att varje underfråga kan matchas till sitt eget index, så i det här exemplet tolkas underfrågan cq:Page till /oak:index/cqPageLucene och underfrågan dam:Asset blir /oak:index/damAssetLucene.

    code language-plain
    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
    

    resulterar i följande fråge- och frågeplan:

    code language-plain
    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) *:* */
    

    Utforska frågan och resultaten via QueryBuilder Debugger och AEM Chrome Plug-in.

  5. Hur söker man över flera sökvägar i samma fråga?

    Nytt i AEM 6.3 är möjligheten att fråga över flera sökvägar i samma fråga. Följande QueryBuilder-fråga. Observera att varje "underfråga" kan tolkas som ett eget index.

    code language-plain
    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
    

    resultat i följande fråge- och frågeplan

    code language-plain
    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]) */
    

    Utforska frågan och resultaten via QueryBuilder Debugger och AEM Chrome Plug-in.

recommendation-more-help
bb44cebf-d964-4e3c-b64e-ce882243fe4d