Gin digunakan sebagai kerangka kerja HTTP, GRPC digunakan sebagai kerangka kerja RPC, dll. Digunakan sebagai penemuan layanan.
Layanan keseluruhan dibagi menjadi用户模块,收藏夹模块,索引平台,搜索引擎(文字模块) , dan搜索引擎(图片模块) .
Data Crawler Crawls yang didistribusikan dan mengirimkannya ke kluster Kafka, dan kemudian memasuki database untuk dikonsumsi. (Meskipun crawler belum menulisnya, itu tidak mencegah saya menggambar kue ...)
Pencarian teks modul mesin pencari diatur secara terpisah menggunakan BoltDB untuk menyimpan indeks, MapReduce mempercepat pembangunan indeks dan menggunakan roaring bitmap untuk menyimpan indeks.
Gunakan TRIE Tree untuk mengimplementasikan Asosiasi Entri (Asosiasi Entri Auxiliary Model Algoritma direncanakan akan ditambahkan nanti).
Pencarian gambar menggunakan resnet50 untuk melakukan kueri vektor + kueri database Milvus atau FAISS Vector (saya mulai ... DEEPEEDEARNING terlalu sulit ...).
Mendukung banyak penarikan, penarikan indeks terbalik di GO, dan penarikan vektor di Python. Koneksi dipanggil melalui GRPC untuk melakukan fusi.
Mendukung TF-IDF, BM25 dan penyortiran algoritma lainnya.
?? alamat front-end
semua bereaksi, tapi masih mengkode
React-Tangseng
Perencanaan masa depan
Terkait arsitektur
Memperkenalkan sekering downgrade
Perkenalkan Jaeger untuk pelacakan tautan lengkap (pelacakan pergi ke Python)
Memperkenalkan skywalking atau prometheus untuk memantau
Ekstrak init dari DAO dan gunakan kunci untuk mendapatkan instance database yang relevan
Pemisahan data panas dan dingin (lihat skema ES, kuncinya adalah menilai standar panas dan dingin, yang mungkin ditulis di middleware?)
Saat ini, MySQL cukup untuk menyimpan indeks depan, tetapi mungkin secara langsung digunakan untuk OLAP dalam satu langkah.
Terkait fungsional
Terlalu lambat untuk membangun indeks.
Kompresi indeks, indeks terbalik, yaitu, tabel indeks terbalik, selanjutnya berubah untuk menghemat offset, menggunakan mmap
Perhitungan korelasi harus dipertimbangkan, TFIDF, BM25
Gunakan pohon awalan untuk menyimpan informasi asosiasi
Pohon awalan terkompresi huffman disandikan
Saat membuat indeks, alamat transfer file diubah ke aliran transfer file
Python memperkenalkan model BET untuk melakukan kata -kata rekomendasi segmentasi kata dan menyediakan antarmuka GRPC
Penyimpanan pohon terbalik dan trie mendukung penyimpanan serpihan hash yang konsisten
Kata vektor
PageRank
Proses membangun dan mengingat untuk memisahkan pohon trie
Tambahkan kata participle ke IK word participle
Bangun platform indeks, komputasi dan penyimpanan terpisah, indeks dan penarikan terpisah
Dan operasi perbedaan (operasi bit)
Pagination
Menyortir
Kueri input yang benar, seperti "lu jiazui" -> "lu jiazui"
Masukkan entri untuk mengaitkannya, seperti "Dongfang Ming" Tips -> "Dongfang Pearl"
Saat ini, ini adalah metode pengindeksan berbasis blok.
Tambahkan pengindeksan dinamis berdasarkan yang sebelumnya (saya tidak tahu apakah yang sebelumnya dapat diimplementasikan ...)
Reformasi indeks terbalik dan gunakan raungan bitmap untuk menyimpan docid (sangat sulit)
Menerapkan kelas TF
Setelah mencari satu, cache tidak dihapus, mengakibatkan hasilnya digabungkan dengan yang sebelumnya.
Optimalisasi Sorter
Mulailah dengan cepat
Lingkungan dimulai!
make env-up
Dataset Kecil ada di source_data/movies_data.csv
Python dimulai!
Pastikan komputer memiliki python diinstal, pastikan bahwa versi python> = 3.9, versi saya 3.10.2
python --version
Pasang lingkungan VENV
python -m venv venv
Aktifkan lingkungan venv python
MacOS:
source venv/bin/activate
Windows:
Saya akan kompatibel setelah saya selesai membersihkan drive C ... Saya belum lari saat menang ...
Instal dependensi pihak ketiga
pipinstall-rrequirements . txt
Golang dimulai!
Versi Golang> = Go 1.16. Versi Go saya adalah 1.18.6
Unduh paket ketergantungan pihak ketiga
go mod tidy
Mengeksekusi di direktori
make run-xxx(user,favortie ...)
# e.g:# make run-user# make run-favorite# 具体看makefile文件
Kontribusi Sumber Terbuka
Silakan periksa CONTRIBUTING_CN.md sebelum mengirimkan PR