検索インデックスでのLowerCaseStrFieldの使用

DataStax Enterprise 6.7.4では、カスタム・フィールド型LowerCaseStrFieldが導入され、以下の機能を提供します。
  • データを小文字に変換し、小文字のデータをdocValuesに正しく格納する。
  • クエリー値を小文字に変換する。
注: LowerCaseStrFieldをテーブルのプライマリ・キーに適用することはできません。また、LowerCaseStrFieldでアナライザーを使用することもできません。

DataStaxは、solr.KeywordTokenizerおよびsolr.LowerCaseFilterFactoryTextFieldを使用しないことを推奨します。生データが予想に反してdocValuesに小文字として保存されていないため、意図しない検索結果が生じる可能性がありました。代わりに、次の例に示すように、カスタムLowerCaseStrField型を使用します。

新しいインデックスのフィールドでLowerCaseStrFieldを使用するには:
CREATE SEARCH INDEX ON <table> WITH COLUMNS *, column { lowerCase : true };
このコマンドは、LowerCaseStrFieldフィールドタイプを使用して、columnを持つ検索インデックスを作成します。フィールド型が自動的に追加されます。
LowerCaseStrFieldフィールド型を使用して、既存のカラムに新しいフィールドを追加するには:
ALTER SEARCH INDEX SCHEMA ON <table> ADD lowerCaseString column;
RELOAD SEARCH INDEX ON <table>;
REBUILD SEARCH INDEX ON <table>;
ALTER SEARCHコマンドは、LowerCaseStrFieldフィールド型が存在しない場合に追加します。
LowerCaseStrFieldをプライマリ・キー・カラムに適用する回避策があります。これを行うには、copyField宣言を使用して、プライマリ・キー・フィールド・データをLowerCaseStrField型として定義されている新しいフィールドにコピーします。たとえば、
ALTER SEARCH INDEX SCHEMA ON <table> ADD lowerCaseString key_column_copy;
ALTER SEARCH INDEX SCHEMA ON <table> ADD copyField[@source='key_column', @dest='key_column_copy'];
RELOAD SEARCH INDEX ON <table>;
REBUILD SEARCH INDEX ON <table>;
検索クエリーは大文字と小文字を区別しません。すべてのクエリーは小文字に変換され、同じ結果を返します。たとえば、次の値を検索しても同じ結果が返されます。
  • name
  • Name
  • NAME