[Groonga-commit] pgroonga/pgroonga at 758552f [master] Document new features

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Sep 1 23:07:37 JST 2015


Kouhei Sutou	2015-09-01 23:07:37 +0900 (Tue, 01 Sep 2015)

  New Revision: 758552fc92e98734260ec7b56384c931076a1dfc
  https://github.com/pgroonga/pgroonga/commit/758552fc92e98734260ec7b56384c931076a1dfc

  Message:
    Document new features

  Modified files:
    README.md

  Modified: README.md (+182 -0)
===================================================================
--- README.md    2015-09-01 20:49:43 +0900 (af4ed67)
+++ README.md    2015-09-01 23:07:37 +0900 (375891d)
@@ -595,6 +595,86 @@ SELECT *, pgroonga.score(score_memos)
 タマイズする機能があります。しかし、PostgreSQLらしく指定するAPIを思い
 ついていないためPGroongaから使うことはできません。
 
+#### 全文検索結果表示
+
+全文検索とは直接関係ありませんが、全文検索した結果を表示するときに有用
+な機能を紹介します。
+
+##### `pgroonga.snippet_html`関数
+
+`pgroonga.snippet_html`関数を使うと該当テキスト中からキーワードが含ま
+れている箇所の周辺テキストを抽出できます。Web検索エンジンは検索結果に
+この情報を含めていることが多いので見たことがあるはずです。
+
+例として、次のテキスト(Groongaの説明文)を使います。
+
+> Groonga is a fast and accurate full text search engine based on
+> inverted index. One of the characteristics of Groonga is that a
+> newly registered document instantly appears in search results.
+> Also, Groonga allows updates without read locks. These characteristics
+> result in superior performance on real-time applications.
+
+
+このテキストの中には「`fast`」というキーワードが含まれています。
+`pgroonga.snippet_html`を使うと「`fast`」周辺のテキストを抽出します。
+キーワードは「`<span class="keyword">`」と「`</span>`」で囲まれます。
+`pgroonga.snippet_html`の`html`はHTMLとして出力するという意味だという
+ことです。
+
+> Groonga is a <span class="keyword">fast</span> and accurate full
+> text search engine based on inverted index. One of the
+> characteristics of Groonga is that a newly registered document
+> instantly appears in search results. Also, Gro
+
+なお、この機能はPGroongaで検索した結果以外にも使えます。そのため、次の
+ように`FROM`なしの`SELECT`でも使えます。なお、
+[`unnest`](http://www.postgresql.org/docs/devel/static/functions-array.html)
+は配列を行にするPostgreSQLの関数です。
+
+```sql
+SELECT unnest(pgroonga.snippet_html(
+  'Groonga is a fast and accurate full text search engine based on ' ||
+  'inverted index. One of the characteristics of Groonga is that a ' ||
+  'newly registered document instantly appears in search results. ' ||
+  'Also, Groonga allows updates without read locks. These characteristics ' ||
+  'result in superior performance on real-time applications.' ||
+  '\n' ||
+  '\n' ||
+  'Groonga is also a column-oriented database management system (DBMS). ' ||
+  'Compared with well-known row-oriented systems, such as MySQL and ' ||
+  'PostgreSQL, column-oriented systems are more suited for aggregate ' ||
+  'queries. Due to this advantage, Groonga can cover weakness of ' ||
+  'row-oriented systems.',
+  ARRAY['fast', 'PostgreSQL']));
+                                                                                 --                                unnest                                                                                                                 
+-- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+--  Groonga is a <span class="keyword">fast</span> and accurate full text search engine based on inverted index. One of the characteristics of Groonga is that a newly registered document instantly appears in search results. Also, Gro
+--  ase management system (DBMS). Compared with well-known row-oriented systems, such as MySQL and <span class="keyword">PostgreSQL</span>, column-oriented systems are more suited for aggregate queries. Due to this advantage, Groonga
+-- (2 rows)
+```
+
+`pgroonga.snippet_html`の使い方は次の通りです。
+
+```text
+pgroonga.snippet_html(target, ARRAY[keyword1, keyword2, ...])
+```
+
+`target`は`text`型の値でキーワード抽出対象のテキストを指定します。
+
+`keyword1`, `keyword2`, `...`は`text`型の配列で、抽出対象のテキストを
+指定します。1つ以上指定してします。
+
+`pgroonga.snippet_html`は`text`型の配列を返します。
+
+配列の各要素にはキーワード周辺のテキストが含まれています。キーワードは
+「`<span class="keyword">`」と「`</span>`」で囲まれ、元のテキストに含
+まれる`<`, `>`, `&`, `"`はHTMLエスケープされます。
+
+各要素に含まれる元テキストは最大200バイトになります。文字数ではなくバ
+イト数です。これに加えて「`<span class="keyword">`」と「`</span>`」が
+増え、`<`や`>`を`&lt;`, `&gt;`などに変換するので、各要素のテキストは
+200バイト以上になることがあります。
+
 #### カスタマイズ
 
 `CREATE INDEX`の`WITH`でトークナイザーとノーマライザーをカスタマイズす
@@ -1085,6 +1165,108 @@ SELECT *
 
 Groongaのデータを直接使うときは気をつけてください。
 
+## 変数
+
+PGroongaの挙動をカスタマイズする変数があります。
+
+### `pgroonga.log_type`変数
+
+`pgroonga.log_type`を使うとPGroongaのログをどのように出力するかを変更
+できます。
+
+有効な値は次の通りです。
+
+  * `file`: ファイルに出力します。デフォルトです。
+  * `windows_event_log`: Windowsイベントログに出力します。
+  * `postgresql`: PostgreSQLのログ出力先に出力します。
+
+`file`を指定した場合のログファイルの場所は「`${PostgreSQLのデータディ
+レクトリー}/pgroonga.log`」になります。場所は`pgroonga.log_path`で変更
+できます。
+
+`windows_event_log`はWindowsでしか使えません。使う場合はコマンドプロン
+プトで次のコマンドを実行し、にWindowsに「`PGroonga`」というイベントを
+登録してください。登録しなくてもログは出力されますが、イベントビューアー
+でログを見たときに警告メッセージが入り、読みにくいです。
+
+    > regsvr32 /n /i:PGroonga ${PostgreSQLをインストールしたフォルダ}\lib\pgevent.dll
+
+`postgresql`はPostgreSQLのログ出力機能を使ってログを出力します。
+PGroongaのログの先頭には次の文字列が含まれます。PGroongaのログだけ抽出
+する場合に利用してください。この文字列の後はGroongaと同じフォーマット
+のメッセージになります。
+
+```text
+pgroonga:log: 
+```
+
+Groongaのログメッセージのフォーマットは
+[Groongaのドキュメント](http://groonga.org/ja/docs/reference/log.html#process-log)
+を参照してください。
+
+### `pgroonga.log_path`変数
+
+`pgroonga.log_path`を使うとログ出力先のファイルを変更できます。
+`pgroonga.log_type`が`file`のときだけ有効です。
+
+デフォルトは「`${PostgreSQLのデータディレクトリー}/pgroonga.log`」です。
+
+### `pgroonga.log_level`変数
+
+`pgroonga.log_level`を使うとどのくらい詳細にログを出力するかを変更できます。
+
+有効な値は次の通りです。
+
+  * `none`: ログを出力しません。
+  * `emergency`: 緊急レベルのログのみを出力します。
+  * `alert`: `emergency`のログと警報レベルのログを出力します。
+  * `critical`: `alert`のログと重大レベルのログを出力します。
+  * `error`: `critical`のログとエラーレベルのログを出力します。
+  * `warning`: `error`のログと警告レベルのログを出力します。
+  * `notice`: `warning`のログと通知レベルのログを出力します。
+  * `info`: `notice`のログと参考情報レベルのログを出力します。
+  * `debug`: `info`のログとデバッグレベルのログを出力します。
+  * `dump`: すべてのログを出力します。
+
+デフォルトは`notice`です。
+
+通常は変更する必要はありません。
+
+変更する場合、使うことが多いのは`none`、`info`、`debug`です。
+
+`none`は一切ログが必要ないときに使います。
+
+`info`は通常時にもう少し詳細な情報が必要なときに使います。
+
+`debug`は問題調査時に使います。
+
+### `pgroonga.lock_timeout`変数
+
+`pgroonga.lock_timeout`を使うとロック獲得のリトライ回数を変更できます。
+
+PGroongaはデータを書き込むときにロックを獲得します。これは、同時にデー
+タを書き込んでデータを破壊しないようにするためです。
+
+ロックの実装はスピンロックです。つまり、次の処理を繰り返してロックを獲
+得します。
+
+  1. ロック獲得にトライ→獲得できたら繰り返し終了
+  2. 一定時間待つ
+
+ただし、一定回数リトライしてもロックを獲得できなかったら諦めます。その
+リトライ回数が`pgroonga.lock_timeout`です。
+
+デフォルト値は`10,000,000`(一千万)です。
+
+PGroongaの「一定時間」は1ミリ秒で、デフォルトでは一千万回リトライする
+ので、デフォルトでは約2.7時間かかってもロックを獲得できなかったら諦め
+ます。
+
+通常は約2.7時間もロック獲得に失敗することはありません。PGroongaのバグ
+の可能性があるので
+[GitHubのissue](https://github.com/pgroonga/pgroonga/issues)に報告して
+ください。
+
 ## アンインストール
 
 次のSQLでアンインストールできます。
-------------- next part --------------
HTML����������������������������...
下載 



More information about the Groonga-commit mailing list
Back to archive index