誰かが私を正しい方向に向けることができますか?私はコードを書く経験は本当にありませんが、私は速い学習者です。簡単だと言っているわけではありませんが、誰かが私を助けてくれることを願っています...
誰かが私を正しい方向に向けることができますか?私はコードを書く経験は本当にありませんが、私は速い学習者です。簡単だと言っているわけではありませんが、誰かが私を助けてくれることを願っています...
回答:
私は昔、昔はブログを書いていたのですが、Web上にはないので、ここにあります。:
検索エンジンを書く方法
Darbol Rowseがprobolgger.netで、 "How to"に関するグループライティングプロジェクトを開催しています。これは私が定期的に読んでいる数少ないブログの1つなので、変更のために読む価値のある何かを書いてみませんか。むしろ、私が喉にHugo Chavesを刺すと脅すことになる私の標準的な暴力的な暴言です。
「検索エンジンの書き方」を書くことにしました。このトピックを選択した理由は2つあります。
私のクライアントはかなりの規模のオンライン小売業者であるため、私は彼らのサイトだけでなく、より具体的には彼らのサイトで販売されている製品だけをWeb全体で検索するのではありません。それでも、インターネットの検索に使用されるより複雑なものを書くために同じテクニックを使用することができます。これは技術系ブログではないので、技術的なことはあまり詳しく説明しません。ハードウェア/処理能力の要件やWebクロールについても説明しません。
私はかなり単純な手法を使用しています。3つのフィールドを持つテーブル(tblKeywords)があります。
私が最初に行うことは、関連するあらゆる場所から個々の単語を収集することです。私のクライアントのために、製品の表から言葉を引き出します。具体的には、Itemid、ItemName、ItemShortDescription、ItemLongDescription、Manufacturer、ManufacturerSKU、Category1、Category2、Category3などのフィールドから。Webページのインデックスを作成している場合は、ページのテキスト、ページタイトル、URL、またはインデックスが作成されているページにリンクしている他のページのリンクからデータを取得できます。
重みの値は、キーワードがどこから来たかによって決まります。たとえば、私の場合、アイテムの製造元のSKUの重みは100になりますが、アイテム名の単語の重みは25になります。ItemLongDescriptionの単語の重みは5になる場合があります。ページタイトルからの太さは75のウェイトになる可能性がありますが、ページテキストからの太字の単語は10のウェイトになる可能性があります。単語が複数回または複数の場所で繰り返されている場合は、そのたびにウェイトを合計しますそれが発生します。たとえば、単語「Shirt」がItemId = 12345の2か所から来て、ItemName(25の重み)であり、ItemLongDescription(Weight of 5 x2 = 10)に2回出現する場合、単語「shirt」は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クローラーに基づいて構築されています。結果を表示するWebサイトを開発する前に、これらの吸盤の1つを構築する方法を理解する必要があります(それを実行するには、高速で効率的なデータベースが必要です)。
無料で配布されている「Introduction to Information Retrieval」のドラフトは、あなたの主要な参考資料になります。基本から上級までの検索(情報検索)を扱います。