質問

特定のプロパティがインデックスされないよう除外したり、スペルチェック、ステミング、または他の機能を有効にしたり、CQ5 検索機能の調整をすることはできますか?

回答、解決策

CQ5 の検索モジュールは、CRX を使用して構築されます。 CRX は、検索を実行するために埋め込み Apache Lucene のインデックスを使用します。CRX は、ニーズに応えるためインデックスを微調整できる様々なパラメーターと設定を提供しています。

SearchIndex の設定:

まず第一に、CRX リポジトリは、1 つ以上のワークスペースを持つことができ、各ワークスペースには独自の検索インデックスがあります。これに加えて、ワークスペースの workspace.xml ファイルで、各ワークスペースの検索インデックスを個別に設定できます。

デフォルトの CQ5 のインストールでは、「crx.default」という 1 つの CRX ワークスペースのみが表示されます。 このワークスペースは、すべてのサイトのコンテンツ(バージョンを除く)を保存します。このワークスペースの検索インデックス設定は、crx-quickstart/workspaces/crx.default/workspace.xml にあります。この設定は、<SearchIndex>エレメント内に作成できます。 これらの設定の参照は、ここから入手できます。

次に、workspace.xml SearchIndex セクションの例を示します。

...

 <SearchIndex class="com.day.crx.query.lucene.LuceneHandler"> <param name="path" value="${wsp.home}/index"/> </SearchIndex> ...

indexing_config.xml configuration:

workspace.xml の設定では、検索インデックスの動作を調整できますが、インデックスされた内容を編集することはできません。これを設定するには、インデックス作成ルールを指定できる indexing_config.xml ファイルを参照する必要があります。

  • CQ のバージョンの<=5.4でデフォルトの設定ファイル indexing_ config.xml は以下に見つけることができます。crx-quickstart/server/runtime/0/_crx/WEB-INF/classes
  • CQ5.5で、デフォルトの設定ファイルは、OSGi コンテナにデプロイされているリポジトリのバンドルに埋め込まれます。
インデックス設定の詳細については、Apache Jackrabbit の次のページを参照してください: http://wiki.apache.org/jackrabbit/IndexingConfiguration

カスタムのインデックス設定を追加するには:
  1. crx-quickstart/repository/workspaces/crx.default/indexing_config.xml 以下で、デフォルト検索のインデックス設定ファイル indexing_config.xml をコピーします。
    * CQ5.4および古いバージョンについて、以下でこのファイルを見ることができます。crx-quickstart/server/runtime/0/_crx/WEB-INF/classes/indexing_config.xml
    * CQ5.5では、お客様の利便性のために次のデフォルトの indexing_config.xm ファイルをコピーしました。
  2. これで、workspace.xml の SearchIndex エレメントで、カスタム indexing_config.xml のパスを設定できるようになりました。テキストエディターの crx-quickstart/workspaces/crx.default/workspace.xml を開き、下記のとおりインデックス設定パラメータを追加します:
    ...
     <SearchIndex class="com.day.crx.query.lucene.LuceneHandler"> <param name="path" value="${wsp.home}/index"/> <param name="resultFetchSize" value="50" /> <param name="indexingConfiguration" value="${wsp.home}/indexing_config.xml"/> </SearchIndex> 
    ...


CRX で利用できる検索機能については、ここを参照してください。

適用対象

CQ5.2+

CQ5.5 から indexing_config.xml

<?xml version="1.0"?>
<!DOCTYPE configuration SYSTEM "http://jackrabbit.apache.org/dtd/indexing-configuration-1.2.dtd">
<configuration
xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:dam="http://www.day.com/dam/1.0"
xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
xmlns:sling="http://sling.apache.org/jcr/sling/1.0">

<! -- サブアセットのコンテンツのインデックスを作成しないでください-->
<index-rule nodeType="nt:resource"
condition="ancestor::subassets/@jcr:primaryType='{http://www.jcp.org/jcr/nt/1.0}unstructured'">
</index-rule>

<!--
ノードスコープフルテキストインデックスから
一部の既知のプロパティを除外します。この下にルールを追加しないでください。理由として
このルールはノードと一致し、デフォルト/フォールバックとして機能します。
-->
<index-rule nodeType="nt:base">
<property nodeScopeIndex="false">analyticsProvider</property>
<property nodeScopeIndex="false">analyticsSnippet</property>
<property nodeScopeIndex="false">hideInNav</property>
<property nodeScopeIndex="false">offTime</property>
<property nodeScopeIndex="false">onTime</property>
<property nodeScopeIndex="false">cq:allowedTemplates</property>
<property nodeScopeIndex="false">cq:childrenOrder</property>
<property nodeScopeIndex="false">cq:cugEnabled</property>
<property nodeScopeIndex="false">cq:cugPrincipals</property>
<property nodeScopeIndex="false">cq:cugRealm</property>
<property nodeScopeIndex="false">cq:designPath</property>
<property nodeScopeIndex="false">cq:isCancelledForChildren</property>
<property nodeScopeIndex="false">cq:isDeep</property>
<property nodeScopeIndex="false">cq:lastModified</property>
<property nodeScopeIndex="false">cq:lastModifiedBy</property>
<property nodeScopeIndex="false">cq:lastPublished</property>
<property nodeScopeIndex="false">cq:lastPublishedBy</property>
<property nodeScopeIndex="false">cq:lastReplicated</property>
<property nodeScopeIndex="false">cq:lastReplicatedBy</property>
<property nodeScopeIndex="false">cq:lastReplicationAction</property>
<property nodeScopeIndex="false">cq:lastReplicationStatus</property>
<property nodeScopeIndex="false">cq:lastRolledout</property>
<property nodeScopeIndex="false">cq:lastRolledoutBy</property>
<property nodeScopeIndex="false">cq:name</property>
<property nodeScopeIndex="false">cq:parentPath</property>
<property nodeScopeIndex="false">cq:segments</property>
<property nodeScopeIndex="false">cq:siblingOrder</property>
<property nodeScopeIndex="false">cq:template</property>
<property nodeScopeIndex="false">cq:trigger</property>
<property nodeScopeIndex="false">cq:versionComment</property>
<property nodeScopeIndex="false">jcr:createdBy</property>
<property nodeScopeIndex="false">jcr:lastModifiedBy</property>
<property nodeScopeIndex="false">sling:alias</property>
<property nodeScopeIndex="false">sling:resourceType</property>
<property nodeScopeIndex="false">sling:vanityPath</property>
<property isRegexp="true">*:.*</property>
</index-rule>

<! -- Cq Page for jcr:contains(jcr:content, "...") searches -->
<aggregate primaryType="cq:PageContent">
<include>*</include>
<include>*/*</include>
<include>*/*/*</include>
<include>*/*/*/*</include>
</aggregate>

<aggregate primaryType="dam:Asset">
<include>jcr:content</include>
<include>jcr:content/metadata</include>
<include>jcr:content/metadata/*</include>
<include>jcr:content/renditions</include>
<include>jcr:content/renditions/original</include>
<include>jcr:content/renditions/original/jcr:content</include>
<! -- child axis orderby index -->
<include>jcr:content/renditions/original/jcr:content/jcr:lastModified</include>
</aggregate>

<! -- nt:file child axis orderby index -->
<aggregate primaryType="nt:file">
<include>jcr:content</include>
<include>jcr:content/jcr:lastModified</include>
</aggregate>

<! -- cq:Page child axis orderby index -->
<aggregate primaryType="cq:Page">
<include>jcr:content</include>
<include>jcr:content/cq:lastModified</include>
</aggregate>

</configuration>

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー