私はこれをブログ私が以前に戻ったとき….それはもはやウェブ上にないので..ここにあります! :
検索エンジンの書き方
probolgger.netのDarrenRowseは、「ハウツー」に関するグループライティングプロジェクトを開催しています。これは私が定期的に読んでいる数少ないブログの1つなので、変更のために読む価値のあるものを書いてみませんか。むしろ、ウゴ・チャベスを喉に刺すと脅してしまう私の標準的な暴力的な暴言です。
「検索エンジンの書き方」を書くことにしました。このトピックを選んだ理由は2つあります。
- ウェブ上でこれに関する良い情報はあまりありません。
- 現在、クライアントの1人のために1つ書いています。
私のクライアントはかなりの規模のオンライン小売業者であるため、ウェブ全体を自分のサイトだけで検索するのではなく、具体的には彼らのサイトで販売されている製品。それでも、インターネットの検索に使用されるより複雑な手法を作成するために、同じ手法を使用できます。これは技術ブログではないことを知っているので、技術について深く掘り下げたり、ハードウェアや処理能力の要件、Webクロールについて説明したりすることはありません。
私はかなり単純な手法を使用しています。 、3つのフィールドを持つテーブル(tblKeywords)があります:
- Itemid(Web検索を行う場合はURLになります)
- キーワード(インデックス付きキーワード)
- 重み(これは1〜100の数値であり、この数値が大きいほど、キーワードの重要度(重み)が高くなります) * PK = ItemID + KeyWord
最初に行うことは、関連する場所から個々の単語を収集することです。私のクライアントのために、私は製品テーブルの言葉を引き出します。具体的には、Itemid、ItemName、ItemShortDescription、ItemLongDescription、Manufacturer、ManufacturerSKU、Category1、Category2、Category3などのフィールドから。ウェブページにインデックスを付ける場合は、ページのテキスト、ページタイトル、URL、またはインデックスに登録されているページにリンクしている他のページのリンクからデータを取得できます。
重みの値は、キーワードの出所によって決まります。 。たとえば、私の場合、アイテムの製造元のSKUの重みは100になりますが、アイテム名の単語の重みは25になります。ItemLongDescriptionの単語の重みは5になります。インデックスを作成している場合Webページでは、ページタイトルの単語の重みが75になり、ページテキストの太字の単語の重みが10になる場合があります。単語が複数回繰り返される場合、または複数の場所で繰り返される場合は、発生するたびの重み。たとえば、「シャツ」という単語が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」などの価値のないキーワードを削除するなど、やるべきことは他にもあります。これはキーフレーズの検索には対応していませんが、フレーズの開始位置と終了位置がわかれば、同様のシステムを使用してフレーズを検索できます。
コメント