CREATE CUSTOM INDEX (SASI)
1つのテーブル・カラムに対してSASIインデックスを生成します(試験段階)。
テーブル・カラムに対してSSTable Attached Secondary Index(SASI)を生成します。
SASIを使用すると、メモリー、ディスク、およびCPUリソースの使用量が大幅に低下します。SASIでは、文字列に対するPREFIXおよびCONTAINSを使用したクエリーが可能で、LIKE = "foo*"
やLIKE = "*foo*"
のSQL実装に似ています。
SASIについての詳細は、「SASIの使用」を参照してください。
構文
CREATE CUSTOM INDEX [ IF NOT EXISTS ] [ index_name ] ON [keyspace_name.]table_name (column_name) USING 'org.apache.cassandra.index.sasi.SASIIndex' [ WITH OPTIONS = { option_map } ] ;
構文規則 | 説明 |
---|---|
大文字 | リテラル・キーワード。 |
小文字 | リテラル以外。 |
イタリック体 |
変数値。ユーザー定義値と置き換えます。 |
[] |
任意。角かっこ( [] )で任意指定のコマンド引数を囲みます。角かっこは入力しないでください。 |
( ) |
グループ。丸かっこ(( ) )は、選択肢を含むグループを示します。丸かっこは入力しないでください。 |
| |
または。縦棒( | )で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。 |
... |
繰り返し可能。省略記号(... )は、構文要素を必要な回数だけ繰り返すことができることを示します。 |
'Literal string' |
単一引用符( ' )でCQL文内のリテラル文字を囲みます。大文字を維持するには、単一引用符を使用します。 |
{ key : value } |
マップ・コレクション。中かっこ( { } )でマップ・コレクションまたはキーと値のペアを囲みます。コロンでキーと値を区切ります。 |
<datatype1,datatype2> |
セット、リスト、マップ、またはタプル。山かっこ(< > )で、セット、リスト、マップまたはタプル内のデータ型を囲みます。データ型はコンマで区切ります。 |
cql_statement; |
CQL文の終了。セミコロン( ; )ですべてのCQL文を終了します。 |
[--] |
コマンドライン・オプションとコマンド引数は、2つのハイフン(-- )。この構文は、引数がコマンドライン・オプションと間違われる可能性がある場合に役立ちます。 |
' <schema> ... </schema> ' |
検索CQLのみ:単一引用符( ' )でXMLスキーマ宣言全体を囲みます。 |
@xml_entity='xml_entity_type' |
検索CQLのみ:スキーマ・ファイルおよびsolrConfigファイル内のXML要素を上書きするための実体とリテラル値を示します。 |
- index_name
- 任意指定のインデックス識別子。名前が指定されていない場合は、デフォルトの
table_name_column_name_idx
が使用されます。特殊文字を使用する場合や大文字と小文字の区別を維持する場合は、引用符で囲みます。 - OPTIONS
-
単純なJSON形式でオプションを定義します。
アナライザーを指定すると、以下の操作が可能です。- テキスト・カラム・データの分析とインデックスの作成
- ワード・ステミングを使用したインデックスの作成
- スキップ可能な単語の指定
- 特定の言語に基づいたローカライズの適用
- 大文字と小文字の正規化(非トークン化アナライザーなど)
アナライザー・クラスのオプション
SASIインデクサーには、2つのアナライザー・クラス(analyzer_class)があります。- org.apache.cassandra.index.sasi.analyzer.StandardAnalyzer(デフォルトのアナライザー)
- org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer
'class' : 'org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer'
両方に適用されるグローバル・オプションと、クラス指定オプションとして標準アナライザーと非トークン化アナライザーがあります。
グローバル・オプション
次のオプションはすべてのアナライザー・クラスに適用されます。オプション 説明 analyzed Trueの場合、指定したアナライザーを使用してリテラル・カラムが分析されています。 is_literal カラムにリテラルを指定します。 max_compaction_flush_memory_in_mb サイズを入力します。 標準アナライザーのオプション
デフォルトのアナライザー・クラス。次のオプションはorg.apache.cassandra.index.sasi.analyzer.StandardAnalyzer
に使用できます。オプション 説明 tokenization_enable_stemming 単語を基本形式に短縮します。たとえば、「stemmer」、「stemming」、「stemmed」などの基本形式は「stem」です。デフォルト: false
。tokenization_skip_stop_words 無視する単語のコンマ区切りリスト(「and」、「the」、「or」など)。 tokenization_locale カラムの言語コード。ローカライズ・コードのリストを参照してください。デフォルト: en
。tokenization_normalize_lowercase 小文字を使用します。デフォルト: false
。tokenization_normalize_uppercase 大文字を使用します。デフォルト: false
。非トークン化アナライザーのオプション
次のオプションはorg.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer
に使用できます。オプション 説明 normalize_lowercase すべての文字列を小文字としてインデックスを作成します。デフォルト: false
。normalize_uppercase すべての文字列を大文字としてインデックスを作成します。デフォルト: false
。case_sensitive 照合する際に大文字と小文字を区別しません。デフォルトでは大文字と小文字を区別してインデックスを作成します。設定: true
。
例
すべての例でcycling.cyclist_nameテーブルを使用します。
カラムに対するSASI PREFIXインデックスの作成
firstname
に対してSASIインデックスを作成します。CREATE CUSTOM INDEX fn_prefix ON cycling.comments (commenter) USING 'org.apache.cassandra.index.sasi.SASIIndex';
SASIモードPREFIX
はデフォルトで、指定する必要はありません。
カラムに対するSASI CONTAINSインデックスの作成
カラムfirstname
に対してSASIインデックスを作成します。
CREATE CUSTOM INDEX fn_contains ON cycling.comments (comment) USING 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = { 'mode': 'CONTAINS' };SASIモード
CONTAINS
を指定する必要があります。カラムに対するSASI SPARSEインデックスの作成
age
に対してSASIインデックスを作成します。CREATE CUSTOM INDEX fn_sparse ON cycling.comments (record_id) USING 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = { 'mode': 'SPARSE' };
SPARSE
を指定する必要があります。このモードは、タイムスタンプまたはミリ秒センサー読み取り値を格納する密度の高い数値カラムに使用します。非トークン化アナライザーを使用した、カラムに対するSASI PREFIXインデックスの作成
age
に対してSASIインデックスを作成します。CREATE CUSTOM INDEX fn_notcasesensitive ON cycling.comments (comment) USING 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = { 'analyzer_class': 'org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer', 'case_sensitive': 'false'};
カラムに対するSASI分析インデックスの作成
comments
に対してSASIインデックスを作成します。CREATE CUSTOM INDEX stdanalyzer_idx ON cycling.comments (comment) USING 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = { 'mode': 'CONTAINS', 'analyzer_class': 'org.apache.cassandra.index.sasi.analyzer.StandardAnalyzer', 'analyzed': 'true', 'tokenization_skip_stop_words': 'and, the, or', 'tokenization_enable_stemming': 'true', 'tokenization_normalize_lowercase': 'true', 'tokenization_locale': 'en' } ;