FTSは、辞書を使用してテキストを正規化します。
12.6。辞書
辞書は、検索で考慮されるべきではない単語(ストップワード)を削除し、同じ単語の異なる派生形式が一致するように単語を正規化するために使用されます。正常に正規化された単語は、語彙素と呼ばれます。
そのため、辞書は、検索で考慮するにはあまりにも一般的または無意味なもの(ストップワード)を破棄し、他のすべてを正規化して、たとえば、都市と都市が異なる単語であっても一致するようにするために使用されます。
ts_debug
からの出力を見て、辞書で何が起こっているかを見てみましょう。
=> select * from ts_debug('english', 'mortgage');
alias | description | token | dictionaries | dictionary | lexemes
-----------+-----------------+----------+----------------+--------------+-----------
asciiword | Word, all ASCII | mortgage | {english_stem} | english_stem | {mortgag}
=> select * from ts_debug('simple', 'mortgage');
alias | description | token | dictionaries | dictionary | lexemes
-----------+-----------------+----------+--------------+------------+------------
asciiword | Word, all ASCII | mortgage | {simple} | simple | {mortgage}
は辞書を使用しているのに対し、は辞書をsimple
使用していることに注意してください。simple
english
english_stem
simple
辞書:_
入力トークンを小文字に変換し、ストップワードのファイルと照合することで動作します。ファイル内で見つかった場合は、空の配列が返され、トークンが破棄されます。そうでない場合、単語の小文字の形式が正規化された語彙素として返されます。
辞書はsimple
ストップワードや小文字を捨てるだけで、それだけです。私たちはその単純さを自分たちで見ることができます:
=> select to_tsquery('simple', 'Mortgage'), to_tsquery('simple', 'Mortgages');
to_tsquery | to_tsquery
------------+-------------
'mortgage' | 'mortgages'
辞書は単純すぎて、simple
単純な複数形を処理することさえできません。
では、このenglish_stem
辞書とは何ですか?「語幹」接尾辞はプレゼントです。この辞書は、語幹アルゴリズムを単語に適用して、(たとえば)都市と都市を同じものに変換します。細かいマニュアルから:
12.6.6。スノーボール辞書
Snowball辞書テンプレートは、人気のあるPorterの英語のステミングアルゴリズムの発明者であるMartinPorterによるプロジェクトに基づいています。[...]各アルゴリズムは、一般的な異体字の単語を、その言語内のベースまたはステムのスペルに減らす方法を理解しています。
そのすぐ下にenglish_stem
辞書があります。
CREATE TEXT SEARCH DICTIONARY english_stem (
TEMPLATE = snowball,
Language = english,
StopWords = english
);
したがって、english_stem
辞書は単語の語幹であり、それが発生することがわかります。
=> select to_tsquery('english', 'Mortgage'), to_tsquery('english', 'Mortgages');
to_tsquery | to_tsquery
------------+------------
'mortgag' | 'mortgag'
エグゼクティブサマリー:'simple'
単純な文字通りのマッチングを意味し、'english'
ステミングを適用して(うまくいけば)より良いマッチングを生成します。ステミングは住宅ローンを住宅ローンに変え、それはあなたにあなたのマッチを与えます。