簡易搜尋實作指南 simple-search-implementation-guide
簡易搜尋實作是來自 Adobe Summit實驗室AEM Search Demystified 的資料。 本頁包含本實驗室的材料。 如需實驗室的導覽,請檢視本頁簡報區段中的實驗室活頁簿。
簡報資料 bookmarks
書籤 bookmarks-1
工具 tools
- 索引管理員
- 說明查詢
- CRXDE Lite > /oak:index/cqPageLucene
- CRX封裝管理員
- QueryBuilder Debugger
- Oak索引定義產生器
章節 chapters
以下章節連結假設初始套件安裝在AEM Authorhttp://localhost:4502
上
套件 packages
初始封裝 initial-packages
章節套件 chapter-packages
引用的材料 reference-materials
更正與跟進 corrections-and-follow-up
實驗室討論的更正和說明,以及與會者後續問題的回答。
-
如何停止重新索引?
可透過AEM Web Console > JMX提供的IndexStats MBean停止重新索引
-
- 執行
abortAndPause()
以中止重新索引。 這會鎖定索引以進一步重新索引,直到叫用resume()
為止。 - 執行
resume()
將重新啟動索引程式。
- 執行
-
檔案: https://jackrabbit.apache.org/oak/docs/query/indexing.html#async-index-mbean
-
-
Oak索引如何支援多個租使用者?
Oak支援將索引置入整個內容樹狀結構,而且這些索引只會在該子樹狀結構中建立索引。 例如,可以建立
/content/site-a/oak:index/cqPageLucene
以僅在/content/site-a
. 下索引內容等效的方法是使用
/oak:index
下索引上的includePaths
和queryPaths
屬性。 例如:/oak:index/siteAcqPageLucene@includePaths=/content/site-a
/oak:index/siteAcqPageLucene@queryPaths=/content/site-a
此方法的考量事項為:
- 查詢必須指定等於索引的查詢路徑範圍的路徑限制,或指定其子系。
- 範圍較廣的索引(例如
/oak:index/cqPageLucene
)也會將資料編入索引,導致重複擷取和磁碟使用成本。 - 可能需要重複的組態管理(例如 在多個租使用者索引中新增相同的indexRules (如果它們必須滿足相同的查詢集)
- 此方法最適合在AEM Publish層級用於自訂網站搜尋,如同在AEM Author中一樣,對於不同的租使用者(例如,透過OmniSearch),查詢通常會在內容樹狀結構中執行 — 不同的索引定義可能會僅根據路徑限制產生不同的行為。
-
所有可用分析器的清單在何處?
Oak公開一組供AEM使用的lucene提供的分析器設定元素。
-
如何在相同的查詢中搜尋頁面和Assets?
AEM 6.3的新功能是在相同提供的查詢中查詢多個節點型別。 下列QueryBuilder查詢。 請注意,每個「子查詢」都可以解析為自己的索引,因此在此範例中,
cq:Page
子查詢解析為/oak:index/cqPageLucene
,dam:Asset
子查詢解析為/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
結果會產生下列查詢與查詢計畫:
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) *:* */
透過QueryBuilder Debugger和AEM Chrome外掛程式探索查詢和結果。
-
如何在相同查詢中搜尋多個路徑?
AEM 6.3的新功能是在相同提供的查詢中跨多個路徑進行查詢。 下列QueryBuilder查詢。 請注意,每個「子查詢」都可以解析為自己的索引。
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
下列查詢和查詢計畫中的結果
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]) */
透過QueryBuilder Debugger和AEM Chrome外掛程式探索查詢和結果。