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

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

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

スキーマのデフォルト

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

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

indexed="true"に設定されているフィールドは、インデックスが作成され、セカンダリ・ファイルとしてLuceneに格納されるため、検索可能です。インデックスが作成されたフィールドは、コピー・フィールドを除き、stored属性値に関係なく、Luceneではなくデータベースに格納されます。コピー・フィールドのデスティネーションはデータベースに格納されません。
  • indexed="false"に設定されているフィールドを格納して、検索クエリーでそのフィールドが返されるようにするには、stored="true"を設定してください。
  • フィールドを無視するには、indexed="false"stored="false"の両方を設定します。
  • 検索は有効にして値が返されないようにするには(たとえば、パスポート番号でユーザーを検索してユーザーは返されるがパスワードは返されないようにする場合など)、indexed="true"stored="false"を設定します。
  • 検索を有効にして値が返されるようにするには、indexed="true"stored="true"の両方を設定します。

サンプル・スキーマ

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"  stored="true"/>
    <field name="quotes"  type="textcollection" indexed="true"  stored="true"/>
    <field name="name"  type="text" indexed="true"  stored="true"/>
    <field name="title"  type="text" indexed="true"  stored="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>