主要な SQL エンジン (MS SQL、Oracle、MySQL) が、同じ語根を共有しているため、2 つの単語が関連していることを理解できるかどうか疑問に思っています。
後者は前者の部分文字列であるため、「network」を検索する場合、「networking」が一致しやすいことがわかっています。
しかし、「ネットワーキング」を検索するときに「ネットワーク」に一致する機能を SQL エンジンは持っているのでしょうか。
どうもありがとう。
主要な SQL エンジン (MS SQL、Oracle、MySQL) が、同じ語根を共有しているため、2 つの単語が関連していることを理解できるかどうか疑問に思っています。
後者は前者の部分文字列であるため、「network」を検索する場合、「networking」が一致しやすいことがわかっています。
しかし、「ネットワーキング」を検索するときに「ネットワーク」に一致する機能を SQL エンジンは持っているのでしょうか。
どうもありがとう。
この機能はステマーと呼ばれます。これは、単語の任意の形式から語幹を推測できるアルゴリズムです。
これは非常に複雑な場合があります。たとえば、ロシア語の単語шёл
とは同じ動詞の異なる形式ですが、共通の文字は 1 つもありません (皮肉なことに、これは英語のandиду
にも当てはまります)。went
go
単語間にスペースを使用しない一部の言語では、単語分割も非常に複雑なタスクになる可能性があります。
SQL Server
全文検索エンジンにプラグイン可能なステマーとワード ブレーカーを使用できます。
トピックは「意味的類似性」だと思います。この問題の最適な解決策を見つけようとするいくつかの努力があります。
Quassnoi が指摘したように、これは Stemming で行うことができます。オンにすると、PostgreSQL は全文検索用にそれを実装します。
ALTER TEXT SEARCH CONFIGURATION blah_en ADD MAPPING FOR english_stem;
これは、 Porter ステマーに基づくSnowball ディクショナリを使用します。Porter ステマーは、おそらく最も広く使用されているステマーの 1 つであるため、適切な結果が得られます。ただし、ステミングは常に希望どおりに正確であるとは限らないことを覚えておくことが重要です。
あなたが望むものではないかもしれませんが、soundex を使ってみることができます。http://www.codeproject.com/KB/database/Phonetic_Search_MSSQL.aspxを参照してください。