4

主要な SQL エンジン (MS SQL、Oracle、MySQL) が、同じ語根を共有しているため、2 つの単語が関連していることを理解できるかどうか疑問に思っています。

後者は前者の部分文字列であるため、「network」を検索する場合、「networking」が一致しやすいことがわかっています。

しかし、「ネットワーキング」を検索するときに「ネットワーク」に一致する機能を SQL エンジンは持っているのでしょうか。

どうもありがとう。

4

4 に答える 4

5

この機能はステマーと呼ばれます。これは、単語の任意の形式から語幹を推測できるアルゴリズムです。

これは非常に複雑な場合があります。たとえば、ロシア語の単語шёлとは同じ動詞の異なる形式ですが、共通の文字は 1 つもありません (皮肉なことに、これは英語のandидуにも当てはまります)。wentgo

単語間にスペースを使用しない一部の言語では、単語分割も非常に複雑なタスクになる可能性があります。

SQL Server全文検索エンジンにプラグイン可能なステマーとワード ブレーカーを使用できます。

http://msdn.microsoft.com/en-us/library/ms142509.aspx

于 2010-10-29T12:09:50.520 に答える
1

トピックは「意味的類似性」だと思います。この問題の最適な解決策を見つけようとするいくつかの努力があります。

于 2010-10-29T12:03:06.107 に答える
1

Quassnoi が指摘したように、これは Stemming で行うことができます。オンにすると、PostgreSQL は全文検索用にそれを実装します。

ALTER TEXT SEARCH CONFIGURATION blah_en ADD MAPPING FOR english_stem;

これは、 Porter ステマーに基づくSnowball ディクショナリを使用します。Porter ステマーは、おそらく最も広く使用されているステマーの 1 つであるため、適切な結果が得られます。ただし、ステミングは常に希望どおりに正確であるとは限らないことを覚えておくことが重要です。

于 2010-10-29T12:52:57.027 に答える
1

あなたが望むものではないかもしれませんが、soundex を使ってみることができます。http://www.codeproject.com/KB/database/Phonetic_Search_MSSQL.aspxを参照してください。

于 2010-10-29T12:06:29.250 に答える