第7章 検索 検索
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
冬休みが近づいてきた。ElectricHarmonyのあなたのチームは、ユーザのエンゲージメントを促進するために、12月いっぱいのチャレンジを実施することに決めた。ブレーンストーミングのワークショップを開き、ベストアイデアに投票する。今年の優勝アイデアは、30日間の歌のチャレンジである(図7-1を参照)!
図7-1. 30日間の楽曲チャレンジ
このチャレンジのゴールは些細なもので、毎日テーマタグがあり、ユーザはそれに関連した曲をソーシャルメディアで共有する。チャレンジは楽しいが、曲の意味は人によって違うので、チームはユーザの個性を理解することを望んでいる。また、"子供時代 "などのタグが、音楽との個人的な関連性を明らかにすることも興味深い。ある人は、レッド・ツェッペリンの曲をそのようにタグ付けするかもしれないが、それはその曲がいつリリースされたかに関係なく、彼らの初期の思い出の一部だったからだ。
このアイデアをテストするために、あなたは社内でチャレンジを実行することにした。すぐに、データベース内の楽曲発見に関連するいくつかの問題に遭遇する。例えば、次のようなことだ:
-
heavenのように部分的なトラック名を検索しても、"天国への階段 "は見つからない。 -
英語の方言の違い:
colourを検索しても、colorは発見できない。 -
検索は大文字と小文字を区別するので、ユーザはトラック名がデータベースにどのように保存されているかを正確に知る必要がある。最初の文字は大文字か?小文字?すべて小文字?多くのバリエーションが考えられる!
この章では、検索結果の関連性を最大化するために、テキストデータをどのようにストアし、クエリするかについて、その全容を学ぶ。なぜなら、単純なテキスト入力に基づいてユーザに正確で関連性のある結果をプロバイダーすることは、非常に挑戦的であり、非常にやりがいのある取り組みだからである。この章では、検索に使われる様々な種類のデータ構造とアルゴリズム、そしてそれらが強力な検索システムにどのような付加価値を与えるかについて説明する。本書はNeo4jに関するものであるが、コンテンツの多くはSolrやElasticsearchのようなApache Luceneベースの検索技術の基礎となるものであるため、これらの技術のユーザはここでおなじみの概念を見つけることができるだろう。
検索とは何か?
レコード店にいる自分を思い浮かべてほしい。ラックにはそれぞれアルファベットが書かれていて、そのアルファベットで始まる名前のアーティストのレコードが入っていることを示している。あなたは "letter "の "L "ラックに向かい、お気に入りのバンドを発見するまでレコードを探し始める:レッド・ツェッペリンだ。
この一連の体験は、一種の検索体験である!クエリを持って店に入ったとしよう。店には効率よく発見できるようなシステムがある。目的のレコードを発見するか、手ぶらで帰るかだ。もしそのアーティストを発見したら、同じバンドの他のアルバムに気づくかもしれない。
テキスト
どのような要素を検索可能にしたいのか?検索とは対照的に、すべてのテキストが検索の対象になるわけではない。あなたのチームが探しているのは、ノードやリレーションシップのプロパティとして保存されているテキストである。対照的に、グラフ内のトラック識別子は、おそらく検索可能にしたいものではないだろう。ユーザは、検索バーに3文字か4文字だけ入力して、 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access