Google/GMail /など。非常に便利かもしれませんが、部分検索や接頭辞検索(例:stuff *)は提供していません。正確な表現を覚えていないため、GMailでメールが見つからないことがよくあります。
ステミングなどがあることは知っていますが、特に英語以外の言語について話す場合は同じではありません。
Googleがそのような機能を追加しないのはなぜですか?それは指数が爆発するからでしょうか?しかし、データベースは部分的な検索を提供するので、この問題に取り組むための優れたアルゴリズムは確かにあります。
ここの問題は何ですか?
Googleは検索したテキストを実際には保存しません。検索用語、ページへのリンク、ページ内のどこに用語が存在するかを保存します。そのデータ構造は、従来のデータベースの意味で索引付けされています。ワイルドカードを使用すると、インデックスのインデックスがかなり遅くなり、Developer Artが言うように、あまり役に立ちません。
Googleは部分的な単語を検索します。 Gmailはしません。ここで何が問題なのかと尋ねられたので、私の答えは努力不足です。この問題には、一定の時間と線形空間で検索できるが、あまりキャッシュに適さないソリューションであるサフィックスツリーがあります。 Suffix Arraysは、よりキャッシュフレンドリで時間効率が高い別のオプションです。
Googleドキュメントを介して可能です-この記事に従ってください:
Google Code Search は正規表現に基づいて検索できるため、その方法を知っています。もちろん、Code Searchが索引付けしなければならないデータの量は、Web検索と比較するとごくわずかです。 Web検索で正規表現またはワイルドカード検索を使用すると、インデックスのサイズが大きくなり、パフォーマンスが低下して実用的でないレベルになります。
Googleで何かを見つける秘訣は、探しているコンテンツに含まれている可能性が高いが、関連のないコンテンツに一緒に表示される可能性が低い検索語(または引用句)の組み合わせを入力することです。ワイルドカード式はこれと逆のことを行います。ワイルドカードが一致すると思われる用語を入力してください。Googleがステミングを行うことを覚えておいてください。コンピューターがSteamで実行されていた当時、Lycos(iirc)にはパターンマッチングがありましたが、数年前にオフになりました。彼らのサーバーに過大な負荷をかけていたと思います。