検索インデックス・スキーマのカスタマイズ

テーブルと検索インデックスのデータ間の関係を定義する検索スキーマをカスタマイズします。

検索スキーマは、テーブルと検索インデックスのデータ間の関係を定義します。スキーマは、インデックスを作成するためにカラムを識別し、カラム名をApache Solrにマップします。

スキーマのデフォルト

DSE Searchは、CQLカラム型を対応するSolrフィールド型に自動的にマップし、フィールド型アナライザーとフィルタリング・クラスを定義し、DocValueを設定します。
ヒント: 必要に応じて、CQL-Solr型互換性マトリクスを使用して、スキーマを変更します。

テーブルとスキーマの定義

indexed="true"に設定されているフィールドは、インデックスが作成され、セカンダリ・ファイルとしてLuceneに格納されるため、検索可能です。インデックスが作成されたフィールドは、コピー・フィールドを除き、Luceneではなくデータベースに格納されます。コピー・フィールドのデスティネーションはデータベースに格納されません。

フィールド値を小文字に設定し、docValuesで小文字として格納するには、カスタムのLowerCaseStrField型を使用します。「検索インデックスでのLowerCaseStrFieldの使用」を参照してください。

サンプル・スキーマ

CQLコレクションのクエリー」の以下の例では、単純なプライマリ・キーを使用しています。スキーマ・バージョン属性は、スキーマ構文とセマンティクスのSolrバージョン番号です。この例では、version="1.5"です。
<schema name="my_search_demo" version="1.5">
  <types>
    <fieldType class="solr.StrField" multiValued="true" name="StrCollectionField"/>
    <fieldType name="string" class="solr.StrField"/>
    <fieldType name="text" class="solr.TextField"/>
    <fieldType class="solr.TextField" name="textcollection" multiValued="true">
      <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
      </analyzer>
    </fieldType>
  </types>
  <fields>
    <field name="id"  type="string" indexed="true"/>
    <field name="quotes"  type="textcollection" indexed="true"/>
    <field name="name"  type="text" indexed="true"/>
    <field name="title"  type="text" indexed="true"/>
  </fields>
  <defaultSearchField>quotes</defaultSearchField>
  <uniqueKey>id</uniqueKey>
</schema>

DSE Searchは、id、quotes、name、titleの各フィールドのインデックスを作成します。

CQLプライマリ・キーとSolrユニーク・キーのマッピング

DSE Searchでは、単純なプライマリ・キーまたは複合プライマリ・キーを使用したCQLテーブルをサポートしています。

フィールドがデータベース内の複合プライマリ・キーまたは複数カラムのパーティション・キーの定義カラムの場合、ユニーク・キー値を丸かっこで囲みます。このようなテーブルのスキーマでは、単純なプライマリ・キーとは異なる構文を使用する必要があります。
  • スキーマのCQLテーブルにフィールドとして現れる各複合プライマリ・キー・カラムを、他のカラムと同様にリストします。
  • 丸かっこで囲まれているキー・カラムを使用してユニーク・キーを宣言します。
  • CQLテーブルで順序が指定されるキーと同様に、uniqueKey要素内のキーの順序を指定します。
  • 複合パーティション・キーを使用する場合は、uniqueKeyに余分な丸かっこを含めないでください。
    パーティション・キー CQL構文 Solr uniqueKey構文
    単純なCQLプライマリ・キー CREATE TABLE ( ... a type PRIMARY KEY, ...);

    aはパーティション・キーとプライマリ・キーの両方)

    <uniqueKey>a</uniqueKey>
    注: 単一キーの場合、丸かっこは必要ありません。
    複合プライマリ・キー CREATE TABLE ( ...PRIMARY KEY ( a, b, c ) );

    aはパーティション・キー、a b cはプライマリ・キー)

    <uniqueKey>(a, b, c)</uniqueKey>
    複合パーティション・キー CREATE TABLE ( ...PRIMARY KEY ( ( a, b), c );

    a bはパーティション・キー、a b cはプライマリ・キー)

    <uniqueKey>(a, b, c)</uniqueKey>