• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:検索エンジンの2単語以上の検索について)

検索エンジンの2単語以上の検索について

このQ&Aのポイント
  • 検索エンジンについて疑問があります。2単語以上での検索が非常に速いため、その仕組みについて知りたいです。
  • 検索エンジンの2単語以上の検索にはどのような仕組みがあるのでしょうか?形態素解析後の実際の検索部分についても解説してください。
  • 検索エンジンでの2単語以上の検索について考えています。現在のインターセクションによる絞り込み検索の仕組みを超える新たな方法が存在するのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

全文検索を行う方法としてはSuffix Arrayなど他にもありますが、転置インデックス以上に早い検索方法は聞いたことがないのでグーグルやヤフーなどが転置インデックス法を行っているのはほぼ間違いないと思います。 ただ、検索エンジンをつくるときはRDBMSなどの重たいDBMSは使いません。 全て自作するか、berkeley dbやQDBMなどの軽いデータベースを使うのが普通です。 ちなみに、検索部分に使っているかはわかりませんが、グーグルやヤフーがberkeley dbを使っているのは以下のURLでわかります。 http://www.sleepycat.com/solutions/customers.shtml QDBMを使った検索エンジンとしてはEstraierなどがあります。 ただ、グーグルやヤフーレベルになるとそれでも足りなくて、安いサーバを何台も買ってきて並べ検索を1,000台以上のマシンが並列して行っているようです。 また、それだけサーバが多いと1日に何台も故障するため、耐障害性の高いソフトウェアを独自に開発しているそうです。

参考URL:
http://internet.watch.impress.co.jp/cda/event/2004/11/16/5430.html
jamjam_goo
質問者

補足

お返事ありがとうございます。 グーグルやヤフーがQDMBというものをつかっているとは知りませんでした。berkeley dbというものも初めてしりました。興味深い情報をありがとうございます。 ですが、おおまか、転置インデックス型がどのようになっているのかが当初のお聞きしたい内容でした(質問の最後の方に検索エンジンがどのような仕組みかと聞いてしまい、質問の仕方が少々悪かったです、申し訳ありません)。 例えば、    コアラ ラッコ ... URL1  0   1   ... URL2  1   0   ... URL3  1   1   ... ...  ...  ... とした場合、”行”の方は問題ないと思いますが、列の方が無限大に増えてしまい、作業を分散しにくいと思いますが、一般的な検索エンジンはこのような方法なのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

えーっと、QDBMやberkeley dbなどでは表という概念がありません。キーとデータの関連付けが出来るだけです。 連想配列とかハッシュがディスクに記録できるものといえばわかりやすいでしょうか。 で1番目の回答でも答えたとおり、実際に記録するのは、 コアラという単語をキーにして011...というデータを ラッコという単語をキーにして101...というデータを 記録するわけなので、列の方が無限大に増えてしまうことはありません(そもそも列という概念がない)。 1番目の回答で書いた表は説明のために作っただけで、実際にあのような巨大な表を作るわけではありません。 また、2番目の回答の文章が悪く誤解されたようですが、 グーグルやヤフーはQDBMを使ってはいないと思いますよ。 berkeley dbを使っているのは確かですが、検索部分に使っているかは知りません。 自分が検索エンジンを作ったときはberkeley dbを使いましたが。

jamjam_goo
質問者

お礼

回答ありがとうございました。 転置インデックスの説明にはほとんどの解説書に表がかいてあったので表形式で検索されていると思いました。おっしゃっていることが分かりました。 検索エンジンを作りたいというわけではありませんが、今まで全く、わからなかった検索エンジンの仕組みがある程度は理解できました。 ありがとうざいました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

全文検索を行う場合、よく使われるのは転置インデックスという方法です。 たとえば、URL1にラッコ、URL2にコアラ、URL3にラッコとコアラの単語が含まれていた場合    コアラ ラッコ ... URL1  0   1   ... URL2  1   0   ... URL3  1   1   ... ...  ...  ... という表を作っておいて コアラという単語をキーにして011...というデータを ラッコという単語をキーにして101...というデータを 記録しておきます。 で、コアラ ラッコで検索をかけるときはこの2つのデータのANDをとればいいだけなのでそれほど遅くはならないと思います。 またこの覚えておくデータは0がほとんどなので(ほとんどのページにはラッコやコアラという単語は現れてこない)、工夫次第でANDをとるときの速度や記録するための容量を減らすことができます。 まあここで下手な説明聞くより転置インデックスで検索すれば詳しい説明が読めると思いますが。

参考URL:
http://www.jaist.ac.jp/~kshirai/lec/i223/12.pdf
jamjam_goo
質問者

補足

返答ありがとうございます。 転置インデックス型も一度考えましたが、システムに登録したい文字が数百万個の場合、カラムが数百万になると思いますので、大変なことになってしまうのではないでしょうか? 大規模な検索エンジンのグーグルやヤフーなどはこの転置インデックス型のような仕組みで検索されているのでしょうか? 細かいですが宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 検索エンジン(google)のAND検索について

    googleでの検索の際3つの単語をAND検索したのですが、 全ての単語が含まれるページのみが表示されるわけではないように思われます。 スペースを空けANDを挿入して検索も試してみましたが結果は変わらないようです。 入力した単語を一つでも含まないページを表示しないような検索をすることは可能でしょうか。

  • 検索エンジンの仕組みについて

    検索エンジンの仕組みが良く分からないのですが・・・ ロボット型エンジンは自動的にサイトを巡回してピックアップするそうですが、そのピックアップというのはどの部分をピックアップするのでしょうか? 表題が会社名のような固有名詞ならば、その固有名詞で登録され検索もされるのでしょうが、例えば「私のホームページ」などという取りとめもない表題をつけていたらそのような単語で検索されないと思うのですが。 例えばこの「私のホームページ」というとりとめもない題名のホームページの中でインコの飼育、古本の情報のページがあったとします。 その場合自分でトップページのタグの中に「インコ」「古本」等引っ掛って欲しいキーワードとかをみなさん埋め込んでいるのでしょうか? ご存知の方教えて頂ければありがたいです。

  • 検索エンジンで検索結果を上位にするには?

    教えてください。 Yahooやgoogleの検索でキーワードを入れて検索しますよね。検索結果で上位(1ページ目か、せめて2メージ目)にこなければ、まずアクセスしません。あるキーワードで検索したら、自分もしくは企業のHPを検索結果の上位にしたいのですどうしたら良いのでしょうか? <質問> 1.検索結果の順位付けのしくみが知りたい。 2.どのようにしたら上位(1ページ目か2ページ目)に   することができるのでしょうか?

  • 検索単語の効率的な探し方?

    ある単語をグーグルなどで検索して、結果のページを開くにも1ページの量が多く、スクロールを使い、その単語を探すのに苦労します。 キャッシュのハイライト表示が出ればまだしも、時として掲示板のページ等はハイライト表示が透明のため(?)強調されない不具合が起きることもあり、こうなるともうお手上げとなる事がしばしばあります。 すぐにページ上の目的単語の場所までスクロールしてくれるソフトか何かはないものでしょうか?

  • 検索エンジンの"キャッシュ"について

    自分のホームページを持っているのですが、今となっては公開したくない情報を含んでいるページがあったのでそのページは削除しました。 ですが、ある単語でgoogleなどの検索サイトで検索すると、検索結果に表示されてしまいます。 そして"キャッシュ"というところをクリックすると過去のページが表示されてしまいます。 サイト側に削除依頼を出せばキャッシュは削除できることは知っています。 でもとりあえずキャッシュというのは定期的に更新されるものなので削除したページの情報はいずれはほっといても消えるというのは本当でしょうか? 早急に削除したいというわけでもないので。 それと、これは自分のサイトではないのですが、あるサイト内の掲示板のようなところに、今となっては公開したくない情報を書き込んだことがあります。 その書き込みは削除したのですが、ここでもキャッシュに保存されており、検索結果に表示されてしまって"キャッシュ"をクリックすると過去の自分の書き込みが表示されてしまいます。 サイトの運営者に連絡すればキャッシュは消せるのでしょうが、なかなか連絡がとれないようなこともありますし無視されることもあります。 この場合でもそうなのですが、"キャッシュ"というのは定期的に更新されるものであり、更新されればすでに削除したそういう書き込みは検索結果に表示されないしキャッシュでも見れないようになるのは間違いないでしょうか?

  • LIKE %検索単語%

    perlのDBIを用いてMYSQLのLIKE %検索単語%を使って掲示板の記事の全文検索を作りました。日本語の検索に関しては意図した記事を拾ってきてくれるのですが、英字の検索単語に関して、その英字だけを含んだ以外の記事も余計に拾ってきてきます。 現在の症状 【僕らは】 【意味】 【宝山】 といった単語が入った記事が検索単語をLIKE %a% として検索をかけると 【a】の検索結果として返ってきます。上記の記事内にはもちろん【a】という単語は含まれていません。 【僕らは】【意味】【宝山】といった単語はあくまでもこういった単語が検索結果として返ってきたというだけで参考までに用意した単語です。他にもあると思われます。原因がまったくわからないので、なぜこういった単語が【a】と検索をかけて引っかかってくるか全くわかりません。 掲示板の記事は以下にいれています テーブル名 post カラム名 log select * from post where log like '%a%'; 使用中の環境(PERL,MYSQLなど)の文字コードはすべてutf8で統一。 文字コードも統一しているし、日本語では意図したとおり動いてくれるので原因がまったくわかりません。お知恵をお貸しください。

  • 任意の単語を除いて検索するシステム

    こんばんは。インターネットの検索エンジンを利用していてふと疑問に思ったことがあるので、ここで質問したいと思います。 例えば、小学校について調べたいときは検索欄に「小学校」と入力して検索ボタンを押すと、該当するページが表示されます。あれは、「小学校」という単語を含むページを沢山の情報の中からかっさらうわけですよね。そこで思ったのですが、検索結果の中からある特定の単語を含むページを除外するシステムってないんでしょうか? 例)検索欄に   検索:小学校 学級崩壊  除外:2ちゃんねる   と入力すると、2ちゃんねる以外のページが表示される。 暴力的表現を含むサイトや成人向けコンテンツを含むサイトをブロックするフィルタリングソフトは知っておりますが、上記のようなシステムは開発されていないのでしょうか? ご回答お願い致します。

  • 検索エンジンは何故そんなに高速なのか?

    素朴な疑問なのですが、いつもGoogleなどの検索をかけるたびに不思議に思うことがあります。一つの単語を検索するとわずか0.1~0.2秒で世界中から数千万件の情報がヒットします。何故こんなに速いの??と不思議です。自分のパソコン内のドライブを対象にワード検索をかけるとゆうに1時間以上かかるのにこの差は一体なんだろうという感じです。パソコン内検索の場合はハードディスクを読み込むため時間がかかるというのはわかるのですが、それなら検索エンジンというのは超巨大なメモリーを持っているということでしょうか?この超巨大メモリには世界中の情報が蓄積されているのでしょうか?そうだとしたらそのメモリーは一体どれくらいの容量なのでしょう?不思議でしかたありません。 どなたかわかり易く教えてください。

  • 各検索エンジンについて教えてください。

    こんにちは。 早速ですが、ご質問させていただきます。 Yahoo! Google gooなど検索エンジンは多くありますが 1:日本における検索エンジンの使用シェアは? 2:Yahooはあいうえお順にならぶのですか? 3:ロボット型は検索した単語が多く含まれている順に並ぶのですか? 4:2.3をふまえ、検索エンジンの結果で、1ページ目の上位に表示されるにはどう したらいいですか?(ちなみにHPの内容はすごく充実しているとしてお考えください) どなたか詳しい方がいらっしゃいましたら、よろしくお願いします。

  • 検索エンジン(googleなど)

    検索エンジンでヒットする条件って何なのでしょうか? 私はてっきり、HTMLに書かれた内容が検索ワードと一致すればヒットするのかと思っていたのですが、最近、全く関係ないページがヒットすることが多くなっているんです。 …適当な例がこれ以外思い出せないので、勝手に個人のページを例に出して申し訳ないのですが、 「AZURE FANTASY」で検索すると、「秋国林檎堂」というページが上位にヒットするのですが、このページには「AZURE FANTASY」という単語は全く書かれていません。キャッシュも見てみましたがやはりないみたいです。 これって、何が原因なのでしょうか?検索していると全く関係ないページがひっかかって、この例の場合は「何でだろう?」と思うだけですが、時には過激なアダルトサイトなどがひっかかって不快な思いをしています… できれば、検索エンジンの仕組みについてまでつっこんだ回答がいただきたいのですが、 きれいに検索がかけられる方法などもあればお教えください