CQLインデックス管理のクイック・スタート

CQLインデックス管理コマンドを使用した検索インデックスの作成および変更の例。

このクイック・スタートの例では、CQLインデックス管理コマンドを使用した検索インデックスの作成および変更の概要を示します。

検索インデックスの作成

  1. cqlshを起動してSolrノードにチュートリアル・キースペースを作成します。
    cqlsh
  2. テーブル・スキーマを設定してデフォルトのインデックスを作成します。
  3. KillrVideoアプリケーションで、ユーザー・テーブルにキースペース、テーブルを作成し、検索インデックスを作成します。
    CREATE KEYSPACE demo WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': 1}; CREATE TABLE demo.users ( userid uuid, firstname text, lastname text, email text, created_date timestamp, PRIMARY KEY (userid)); CREATE SEARCH INDEX ON demo.users;

    テーブルに新しい検索インデックスが生成されます。既存のデータのインデックスは再作成されます。

  4. CQLシェルのDESCRIBE SEARCH INDEX SCHEMAを使用します。保留中の検索インデックス・スキーマを表示します。
    生成されたスキーマは以下のようになります。
    <schema name="autoSolrSchema" version="1.5">
      <types>
        <fieldType class="org.apache.solr.schema.TextField" name="TextField">
          <analyzer>
            <tokenizer class="solr.StandardTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
          </analyzer>
        </fieldType>
        <fieldType class="org.apache.solr.schema.UUIDField" name="UUIDField"/>
        <fieldType class="org.apache.solr.schema.TrieDateField" name="TrieDateField"/>
      </types>
      <fields>
        <field indexed="true" multiValued="false" name="firstname" stored="true" type="TextField"/>
        <field docValues="true" indexed="true" multiValued="false" name="userid" stored="true" type="UUIDField"/>
        <field indexed="true" multiValued="false" name="email" stored="true" type="TextField"/>
        <field indexed="true" multiValued="false" name="lastname" stored="true" type="TextField"/>
        <field docValues="true" indexed="true" multiValued="false" name="created_date" stored="true" type="TrieDateField"/>
      </fields>
      <uniqueKey>userid</uniqueKey>
    </schema>
  5. 名前フィールドのASCII以外の文字の許容度を上げるには、以下のALTER SEARCH INDEX SCHEMA文を使用して新しいfieldTypeを追加します。
    ALTER SEARCH INDEX SCHEMA ON demo.users ADD types.fieldType [ @name='TextField_intl' , @class='org.apache.solr.schema.TextField' ] WITH $${ "analyzer": [ { "type": "index", "tokenizer": { "class": "solr.StandardTokenizerFactory" }, "filter": [ { "class": "solr.LowerCaseFilterFactory" }, { "class": "solr.ASCIIFoldingFilterFactory" } ] }, { "type": "search", "tokenizer": { "class": "solr.StandardTokenizerFactory" }, "filter": [ { "class": "solr.LowerCaseFilterFactory" }, { "class": "solr.ASCIIFoldingFilterFactory" } ] } ] }$$;
    ALTER SEARCH INDEX SCHEMAの例のドル記号($$)構文は、単一引用符をエスケープするためのドル引用符です。「単一引用符のエスケープ」を参照してください。この新しいfieldTypeにはインデックス・フェーズと分析フェーズがあります。
    <fieldType class="org.apache.solr.schema.TextField" name="TextField_intl">
      <analyzer type="index">
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ASCIIFoldingFilterFactory"/>
        <tokenizer class="solr.StandardTokenizerFactory"/>
      </analyzer>
      <analyzer type="search">
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ASCIIFoldingFilterFactory"/>
        <tokenizer class="solr.StandardTokenizerFactory"/>
      </analyzer>
    </fieldType>
  6. firstnameフィールドとlastnameフィールドの型を変更します。
    ALTER SEARCH INDEX SCHEMA ON demo.users SET field[@name='firstname']@type = 'TextField_intl';
    ALTER SEARCH INDEX SCHEMA ON demo.users SET field[@name='lastname']@type = 'TextField_intl';
  7. dsetool検索インデックス管理コマンドとは異なり、ALTER SEARCH INDEXで加えた変更はすべて、検索インデックスの保留中のリソースのみに影響します。変更を適用するには、以下の手順を実行します。
    1. インデックスを再度読み込みます。
      RELOAD SEARCH INDEX ON demo.users;
    2. インデックスに既存のデータがある場合は、インデックスをリビルドします。
      REBUILD SEARCH INDEX ON demo.users;