Jika saya ingin membangun mesin pencari, bagaimana saya memulai? [Tutup]


9

Adakah yang bisa mengarahkan saya ke arah yang benar? Saya benar-benar tidak memiliki pengalaman menulis kode tetapi saya seorang pembelajar yang cepat. Saya tidak berusaha mengatakan itu akan mudah tetapi saya berharap seseorang dapat membantu saya ...


6
Jika Anda tidak memiliki pengalaman menulis kode, bagaimana dengan mempelajari cara membuat kode terlebih dahulu? Membangun mesin pencari adalah semacam kerja keras bagi seseorang yang baru dalam pemrograman.
Terence Ponce

3
Seperti yang dikatakan Terence, itu bukan sesuatu yang baru bagi pemrograman. Setiap mesin pencari yang bagus sama sekali cenderung menjadi pekerjaan yang cukup rumit, ada alasan Google sangat besar, mereka melakukan tugas yang sangat sulit dengan cukup baik. Bahkan programmer berpengalaman cenderung lebih suka menggunakan sesuatu yang sudah dibuat sebelumnya. Jika Anda memberikan ide tentang apa yang Anda inginkan, mungkin kami dapat mengarahkan Anda ke arah yang benar.
Orbling

2
Mulailah dengan proyek yang lebih kecil. Membangun Mesin Pencari melibatkan sejumlah besar kode. Dan bagaimana Anda mengumpulkan semua data untuk mesin pencari Anda? Anda akan membutuhkan lebih banyak kode dan infrastruktur yang besar. Sungguh, silakan mulai pada proyek yang lebih kecil dan bekerja atau Anda hanya akan frustrasi.
James

1
Buku ini membantu saya memahami apa itu mesin pencari dan bagaimana mereka dibuat: nlp.stanford.edu/IR-book
devnull

Jawaban:


16

Saya menulis ini untuk blog saya dulu punya jalan kembali ketika .... itu tidak lagi di web jadi .. ini dia! :

Cara menulis mesin pencari

Darren Rowse ke probolgger.net mengadakan Proyek Penulisan Grup tentang "How to". Ini adalah salah satu dari sedikit blog yang saya baca secara teratur, jadi saya pikir mengapa tidak menulis sesuatu yang layak dibaca untuk perubahan, melainkan kata-kata kasar kasar saya di mana saya akhirnya akan mengancam untuk menikam Hugo Chaves di tenggorokan.

Saya memutuskan untuk menulis "Cara menulis mesin pencari". Saya memilih topik ini karena dua alasan:

  1. Tidak banyak info bagus tentang ini di web.
  2. Saat ini saya sedang menulis satu untuk salah satu klien saya.

Klien saya adalah pengecer online dengan ukuran signifikan, jadi saya tidak mencari seluruh web hanya di situs mereka, lebih khusus lagi hanya produk yang akan dijual di situs mereka. Namun demikian, teknik yang sama dapat digunakan untuk menulis yang lebih kompleks yang digunakan untuk mencari di internet. Saya tahu ini bukan blog teknologi, jadi saya tidak akan membahas terlalu dalam soal teknis, saya juga tidak akan membahas persyaratan daya pemrosesan perangkat keras, atau perayapan web.

Saya menggunakan teknik yang cukup sederhana, saya punya tabel (tblKeywords) dengan tiga bidang:

  1. Itemid (Jika Anda melakukan pencarian di web, ini adalah URL)
  2. Kata Kunci (Kata Kunci Terindeks)
  3. Berat (ini adalah nilai numerik dari 1-100 semakin tinggi angka ini semakin signifikan (berat) yang dibawa kata kunci) * PK = ItemID + KeyWord

Hal pertama yang saya lakukan adalah mengumpulkan kata-kata individual dari mana saja yang relevan. Untuk klien saya, saya akan menarik kata tabel produk. Khususnya dari bidang Itemid, ItemName, ItemShortDescription, ItemLongDescription, Manufacturer, ManufacturerSKU, Category1, Category2, Category3 dll. Jika Anda mengindeks halaman web, Anda dapat menarik data dari teks halaman, judul halaman, URL atau tautan di halaman lain yang menghubungkan kembali ke halaman yang diindeks.

Nilai bobot ditentukan oleh dari mana kata kunci berasal. Misalnya dalam kasus saya SKU Pembuatan Item akan mendapatkan bobot 100, sedangkan kata dari nama Item mungkin mendapatkan berat 25. Sebuah kata dari ItemLongDescription mungkin mendapatkan bobot 5. Jika Anda mengindeks halaman web, kata-kata dari judul halaman mungkin mendapatkan bobot 75 sedangkan kata dalam huruf tebal dari teks halaman mungkin mendapatkan bobot 10. Jika kata diulang lebih dari satu kali atau \ dan di lebih dari satu tempat Anda akan menambah bobot untuk setiap kali ini terjadi. Sebagai Contoh Jika kata "Kemeja" berasal dari dua tempat untuk ItemId = 12345, ItemName (berat 25) dan muncul dua kali dalam ItemLongDescription (Berat 5 x2 = 10) kata "kemeja" akan memiliki berat total 35 untuk ItemId = 12345.

Jika seseorang mencari "kemeja pink", saya mencari meja saya untuk semua contoh kata "Pink" atau "Kemeja" dan Total bobot. Menampilkan Item dengan berat total tertinggi di atas.

SQL:

Select Itemid, sum(weight) as totWeight from tblKeywords
group by itemId having keyword in ('pink','shirt')

Jadi di sini Anda memilikinya, mesin pencari dasar (dan cepat). Tentu saja ada lebih banyak yang harus dilakukan, seperti menghapus tanda baca, Kode HTML dan kata kunci tidak berharga seperti "dan", "jika", "atau". Ini tidak membahas pencarian frase kunci, tetapi Anda dapat menggunakan sistem yang sama untuk frase jika Anda bisa mencari tahu di mana mereka memulai dan mengakhiri.


terima kasih jawaban yang bagus apa yang akan Anda sarankan untuk mengelompokkan produk. maksud saya Anda memiliki 1 juta laman produk rayapan dari berbagai situs web. Anda ingin mengelompokkan produk yang sama di situs web yang berbeda: programmers.stackexchange.com/questions/134292/…
MonsterMMORPG

@ Monster - Bagaimana dengan Kombinasi Produsen \ SKU Produk?
Moron

Anda juga dapat membeli (menyewakan) data ini dari perusahaan seperti Etilize
Morons

dapatkah Anda menjelaskannya sedikit lebih karena saya tidak mengerti. Terima kasih.
MonsterMMORPG

3
Jawaban praktis yang "ok". Namun ini mengabaikan seluruh bidang studi alias "Pengambilan Informasi". Dalam hal "Menunjuk ke arah yang benar" IR akan lebih baik dalam pikiran saya.
Darknight


3

Mesin pencari dibangun di atas perayap web , Anda harus mencari cara untuk membangun salah satu pengisap ini sebelum Anda dapat mengembangkan situs web untuk menampilkan hasilnya (Anda akan memerlukan database yang cepat dan efisien untuk menggunakannya).


3
Mesin pencari mungkin menggunakan output dari perayap web, tetapi mereka tidak ada hubungannya satu sama lain. Selain itu, database cepat, efisien dari berbagai SQL tidak mungkin banyak membantu dalam upaya ini. Mesin pencari umumnya dibangun menggunakan skema pengindeksan file terbalik, yang sama sekali tidak sesuai dengan cetakan SQL.
Marcelo Cantos

@Marcelo Cantos: Pengindeksan file terbalik terdengar rumit: -0 - Terima kasih telah membantu menjelaskan jawaban saya!
palbakulich

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.