web-dev-qa-db-ja.com

Googleが部分検索を提供しないのはなぜですか?インデックスが大きすぎるためでしょうか?

Google/GMail /など。非常に便利かもしれませんが、部分検索や接頭辞検索(例:stuff *)は提供していません。正確な表現を覚えていないため、GMailでメールが見つからないことがよくあります。

ステミングなどがあることは知っていますが、特に英語以外の言語について話す場合は同じではありません。

Googleがそのような機能を追加しないのはなぜですか?それは指数が爆発するからでしょうか?しかし、データベースは部分的な検索を提供するので、この問題に取り組むための優れたアルゴリズムは確かにあります。

ここの問題は何ですか?

29
tom

Googleは検索したテキストを実際には保存しません。検索用語、ページへのリンク、ページ内のどこに用語が存在するかを保存します。そのデータ構造は、従来のデータベースの意味で索引付けされています。ワイルドカードを使用すると、インデックスのインデックスがかなり遅くなり、Developer Artが言うように、あまり役に立ちません。

7
Byron Whitlock

Googleは部分的な単語を検索します。 Gmailはしません。ここで何が問題なのかと尋ねられたので、私の答えは努力不足です。この問題には、一定の時間と線形空間で検索できるが、あまりキャッシュに適さないソリューションであるサフィックスツリーがあります。 Suffix Arraysは、よりキャッシュフレンドリで時間効率が高い別のオプションです。

8
Rui Ferreira

Googleドキュメントを介して可能です-この記事に従ってください:

http://www.labnol.org/internet/advanced-gmail-search/21623/

5
pbaranski

Google Code Search は正規表現に基づいて検索できるため、その方法を知っています。もちろん、Code Searchが索引付けしなければならないデータの量は、Web検索と比較するとごくわずかです。 Web検索で正規表現またはワイルドカード検索を使用すると、インデックスのサイズが大きくなり、パフォーマンスが低下して実用的でないレベルになります。

3
interjay

Googleで何かを見つける秘訣は、探しているコンテンツに含まれている可能性が高いが、関連のないコンテンツに一緒に表示される可能性が低い検索語(または引用句)の組み合わせを入力することです。ワイルドカード式はこれと逆のことを行います。ワイルドカードが一致すると思われる用語を入力してください。Googleがステミングを行うことを覚えておいてください。コンピューターがSteamで実行されていた当時、Lycos(iirc)にはパターンマッチングがありましたが、数年前にオフになりました。彼らのサーバーに過大な負荷をかけていたと思います。

0
Hugh Brackett