BloGroonga

2018-11-29

Groonga 8.0.9リリース

肉の日ですね。Groonga 8.0.9をリリースしました!

それぞれの環境毎のインストール方法: インストール

変更内容

主な変更点は以下の通りです。

トークナイザーのTokenDelimitが空白文字以外でも区切ってトークナイズできるようになりました

TokenDelimit で任意の区切り文字を指定するための新たなオプションとして delimiterpattern が追加されました。例:

% groonga
> tokenize 'TokenDelimit("delimiter", ",")' "A,B"
=> "A", "B"
> tokenize 'TokenDelimit("delimiter", ",")' "A , B"
=> "A ", " B" (空白文字が残っている)
> tokenize 'TokenDelimit("pattern", "\\\\s*,\\\\s*")' "A, B  ,C"
=> "A", "B", "C"

2番目の例のように、delimiter オプションで指定されなかった文字は区切り文字として扱われない事に注意して下さい。 3番目の例のように一定しない空白文字を含む入力に対しては、区切りを正規表現で指定できる pattern オプションが便利でしょう。

ノーマライザートークンフィルターの、主に国際化関連での複数の改善

ノーマライザーの NormalizerNFKC100 が、新しいオプション unify_to_romaji によるひらがな・カタカナからローマ字への変換に対応しました。例:

% groonga
> normalize 'NormalizerNFKC100("unify_to_romaji", true)' "リンゴ みかん"
=> "ringo mikan"

また、新たな組み込みのトークンフィルターとして TokenFilterNFKC100 も追加されました。 このトークンフィルターはノーマライザーの NormalizerNFKC100 と同様に、unify_kana オプションによってカタカナからひらがなへの変換を行えます。例:

% groonga
> tokenize TokenMecab "リンゴおいしい" --token_filters TokenFilterNFKC100
=> "リンゴ", "おいしい" ("リンゴ" が全角にノーマライズされたのみ)
> tokenize TokenMecab "リンゴおいしい" --token_filters 'TokenFilterNFKC100("unify_kana", true)'
=> "りんご", "おいしい" ("リンゴ" が全角且つひらがなにノーマライズされている)

トークンフィルターの TokenFilterStem では、新たに追加された algorithm オプションによって英語以外の言語(フランス語、スペイン語、ポルトガル語、イタリア語、ルーマニア語、ドイツ語、オランダ語、スウェーデン語、ノルウェー語、デンマーク語、ロシア語、フィンランド語)のステミングを行えるようになりました。 具体的な使い方はこのオプションの自動テストを参照して下さい。

トークンフィルターの TokenFilterStopWord では、新たに追加された column オプションによって、is_stop_word 以外の任意の名前のカラムをストップワードの明示に使えるようになりました。 具体的な使い方はこのオプションの自動テストを参照して下さい。

さいごに

8.0.8からの詳細な変更点は8.0.9リリース 2018-11-29を確認してください。

それでは、Groongaでガンガン検索してください!

2018-10-29

Groonga 8.0.8リリース

肉の日ですね。Groonga 8.0.8をリリースしました!

それぞれの環境毎のインストール方法: インストール

変更内容

主な変更点は以下の通りです。

  • トークナイザーのTokenMecabに新しいオプションを追加しました。
  • io_flush中のデータベースのロックをサポートしました。

トークナイザーのTokenMecabに新しいオプションを追加しました

TokenMecabtarget_class オプションが加わりました。

target_class オプションは、指定した品詞のトークンを検索します。 このオプションは、サブクラスの指定や +- を使って特定の品詞を追加、除外することもできます。

  • + は、検索対象の品詞を追加します。
    • + または、`` のみを指定した場合は、全てのトークンが検索対象になります。
  • - は、検索対象から品詞を除外します。

例えば、以下のように代名詞を除く全てのトークンを検索できます。

'TokenMecab("target_class", "-名詞/代名詞", "target_class", "+")'

io_flush 中のデータベースのロックをサポートしました。

この機能は、io_flush中にio_flush対象のテーブルを削除するとGroongaがクラッシュするバグを修正するために追加しました。io_flushは、フラッシュ中にGroongaのデータベースをロックします。そのため、io_flush中は以下のコマンドは実行できません。

  • column_create
  • column_remove
  • column_rename
  • logical_table_remove
  • object_remove
  • plugin_register
  • plugin_unregister
  • table_create
  • table_remove
  • table_rename

さいごに

8.0.7からの詳細な変更点は8.0.8リリース 2018-10-29を確認してください。

それでは、Groongaでガンガン検索してください!

2018-09-29

Groonga 8.0.7リリース

肉の日ですね。Groonga 8.0.7をリリースしました!

それぞれの環境毎のインストール方法: インストール

変更内容

主な変更点は以下の通りです。

  • トークナイザーのTokenMecabに新しいオプションを追加しました。
  • トークナイザーのTokenNgramに新しいオプションを追加しました。
  • 複数のディレクトリからのプラグインの検出に対応しました。

トークナイザーのTokenMecabに新しいオプションを追加しました

TokenMecabに以下のオプションが加わりました。

  • include_class: MeCabのメタ情報のうち classsubclass を出力します。
  • include_reading: MeCabのメタ情報のうち reading を出力します。
  • include_form: MeCabのメタ情報のうち inflected_typeinflected_form、および base_form を出力します。
  • use_reading: かな表記の読みがなによる単語の検索を可能にします。 このオプションは表記揺れのかなでの検索に役立ちます。

詳細はリファレンスを併せて参照して下さい。

トークナイザーのTokenNgramに新しいオプションを追加しました

TokenNgramに以下のオプションが加わりました。

  • unify_alphabet: TokenNgram("unify_alphabet", false)TokenBigramSplitAlpha と同様に働きます。
  • unify_symbol: TokenNgram("unify_symbol", false)TokenBigramSplitSymbol と同様に働きます。
  • unify_digit: TokenNgram("unify_digit", false)TokenBigramSplitDigit と同様に働きます。

詳細はリファレンスを併せて参照して下さい。

複数のディレクトリからのプラグインの検出に対応しました

複数のディレクトリからプラグインを認識するために、新しい環境変数 GRN_PLUGINS_PATH での指定を受け付けるようにしました。 値はディレクトリへのパスのリストで、;区切り(Windows)または:区切り(それ以外のプラットフォーム)です。

GRN_PLUGINS_PATH は既存の GRN_PLUGINS_DIR よりも優先的に認識されます。

この機能は現在の所Windowsでは利用できません。

さいごに

8.0.6からの詳細な変更点は8.0.7リリース 2018-09-29を確認してください。

それでは、Groongaでガンガン検索してください!

2018-08-29

Groonga 8.0.6リリース

肉の日ですね。Groonga 8.0.6をリリースしました!

それぞれの環境毎のインストール方法: インストール

変更内容

主な変更点は以下の通りです。

  • オプティマイザが組み込みの機能になりました。
  • 充分に少ない結果に対して、既定の状態でシーケンシャルサーチを行うようになりました。
  • load コマンドに lock_table オプションを追加しました。

オプティマイザが組み込みの機能になりました

従来プラグインとして提供されていたオプティマイザが、組み込みの機能になりました。 この機能は初期状態で無効化されており、有効化するには環境変数 GRN_EXPR_OPTIMIZE=yes をセットする(または従来通り expression_rewriters プラグインを読み込む)必要があります。

充分に少ない結果に対して、既定の状態でシーケンシャルサーチを行うようになりました

充分に絞り込まれた後の検索結果に対して、シーケンシャルサーチを行うようになりました。 全ての結果のうちの1%で1000レコード未満まで絞り込まれた状態では、通常のインデックス検索よりもシーケンシャルサーチの方が高速です。

この機能は環境変数 GRN_TABLE_SELECT_ENOUGH_FILTERED_RATIO=0.0 をセットする事により無効化できます。

load コマンドに lock_table オプションを追加しました

load --lock_table yesというコマンド列によって、カラムの更新と --each の適用の間、テーブルをロックできるようになりました。 これは loaddelete の衝突の防止に役立ちますが、ロード性能を低下させるでしょう。

さいごに

8.0.5からの詳細な変更点は8.0.6リリース 2018-08-29を確認してください。

それでは、Groongaでガンガン検索してください!

2018-07-29

Groonga 8.0.5リリース

肉の日ですね。Groonga 8.0.5をリリースしました!

それぞれの環境毎のインストール方法: インストール

変更内容

主な変更点は以下の通りです。

time_classify_day_of_week()関数を追加

各検索結果の日時情報について、曜日の情報を取得するための機能が追加されました。 新しい関数 time_classify_day_of_week()time 型の値を唯一の引数として受け付け、その日時の曜日を返します。 返される値は UInt8 型で、0 は日曜日を、6 は土曜日を表します。

この関数を使う前には、最初に以下のようなコマンドで functions/time プラグインを登録する必要があります:

plugin_register functions/time

time_format_iso8601()関数を追加`

time 型の値をISO 8601形式で整形した結果を取得する機能が追加されました。 新しい関数 time_format_iso8601()time 型の値を唯一の引数として受け付け、その日時を 2018-07-29T23:59:59.999999+09:00 のようなISO 8601形式の文字列にして返します。

前項と同様、この関数を使うためには functions/time プラグインを登録する必要があります。

古いバージョンのUbuntuとDebianのサポートを廃止

ご存じの通り、Ubuntu 17.10 (Artful Aardvark) と Debian jessie は現在どちらもサポート期間が終了しています。 Groonga 8.0.5 およびこれ以降のバージョンは、これらの古いバージョンの環境向けにはリリースされませんのでご注意下さい。

さいごに

8.0.4からの詳細な変更点は8.0.5リリース 2018-07-29を確認してください。

それでは、Groongaでガンガン検索してください!