誰かが私を正しい方向に向けることができますか?私はコードを書く経験は本当にありませんが、私は速い学習者です。簡単だと言っているわけではありませんが、誰かが私を助けてくれることを願っています...
私は昔、昔はブログを書いていたのですが、Web上にはないので、ここにあります。 :
検索エンジンの書き方
Darbol Rowseがprobolgger.netで、「ハウツー」についてのグループライティングプロジェクトを開催しています。これは私が定期的に読んでいる数少ないブログの1つなので、変更のために読む価値のある何かを書いてみませんか。むしろ、私が喉にHugo Chavesを刺すと脅すことになる私の標準的な暴力的な暴言です。
「検索エンジンの書き方」を書くことにしました。このトピックを選択した理由は2つあります。
私のクライアントはかなりの規模のオンライン小売業者です。そのため、私は彼らのサイトだけ、より具体的には彼らのサイトで販売されている製品だけをウェブ全体で検索するのではありません。それでも、インターネットの検索に使用されるより複雑なものを書くために同じテクニックを使用することができます。これは技術系ブログではないので、技術的なことはあまり詳しく説明しません。ハードウェア/処理能力の要件やWebクロールについても説明しません。
私はかなり単純な手法を使用しています。3つのフィールドを持つテーブル(tblKeywords)があります。
私が最初に行うことは、関連するあらゆる場所から個々の単語を収集することです。私のクライアントのために、製品の表から言葉を引き出します。具体的には、Itemid、ItemName、ItemShortDescription、ItemLongDescription、Manufacturer、ManufacturerSKU、Category1、Category2、Category3などのフィールドから。 Webページのインデックスを作成している場合は、ページテキスト、ページタイトル、URL、またはインデックスが作成されているページにリンクしている他のページのリンクからデータを取得できます。
重みの値は、キーワードがどこから来たかによって決まります。たとえば、私の場合、アイテムの製造元のSKUの重みは100になりますが、アイテム名の単語の重みは25になります。ItemLongDescriptionの単語の重みは5になる場合があります。ページタイトルからの太字は75の重みを取得できますが、ページテキストからの太字の単語は10の重みを取得できます。1つの単語が複数回または複数の場所で繰り返されている場合は、そのたびに重みを合計しますそれが発生します。たとえば、単語「シャツ」がItemId = 12345の2つの場所から来ており、ItemName(25の重み)がItemLongDescription(重み5 x2 = 10)に2回表示されている場合、単語「シャツ」のItemIdの合計重みは35になります。 = 12345。
誰かが「ピンクのシャツ」を検索した場合、「ピンク」または「シャツ」という単語のすべてのインスタンスをテーブルで検索し、重みを合計します。合計重量が最も高いアイテムを上に表示します。
SQL:
Select Itemid, sum(weight) as totWeight from tblKeywords
group by itemId having keyword in ('pink','shirt')
これが基本的な(そして高速な)検索エンジンです。もちろん、句読点、HTMLコード、「and」、「if」、「or」などの意味のないキーワードを取り除くなど、やるべきことは他にもあります。これはキーフレーズの検索には対応していませんが、フレーズの開始位置と終了位置を特定できれば、同様のシステムをフレーズに使用できます。
検索エンジンは web crawlers に基づいて構築されています。結果を表示するWebサイトを開発する前に、これらの吸盤の1つを構築する方法を理解する必要があります(移動するには高速で効率的なデータベースが必要です)それと)。
自由に配布された Introduction to Information Retrieval のドラフトは、主要な参考資料になります。基本から上級までの検索(情報検索)を扱います。
これは、20日から始まるCSの入門コースです。無料で提供されていますので、ぜひご覧ください。