CompleteSearch adalah mesin pencari cepat dan interaktif untuk pencarian awalan peka konteks pada kumpulan dokumen tertentu. Ini tidak hanya memberikan hasil pencarian, seperti mesin pencari biasa, tetapi juga penyelesaian untuk kata permintaan terakhir (mungkin hanya diketik sebagian) yang menghasilkan hit. Ini dapat digunakan untuk memberikan dukungan yang sangat efisien untuk berbagai fitur: pelengkapan otomatis kueri, pencarian faceted, pencarian sinonim, pencarian toleransi kesalahan, pencarian semantik. Daftar publikasi tentang teknik di balik CompleteSearch dan banyak penerapannya disediakan di akhir halaman ini.
Untuk demo berbagai kumpulan data, cukup periksa repositori ini dan ikuti petunjuk di bawah. Dengan satu baris perintah, Anda mendapatkan demo yang berfungsi (Anda dapat memilih dari beberapa kumpulan data, masing-masing berukuran beberapa juta dokumen, jadi tidak terlalu besar, tetapi juga tidak kecil). CompleteSearch menskalakan koleksi dengan puluhan atau bahkan ratusan juta dokumen, tanpa kehilangan interaktivitasnya.
Periksa repositori dan buat image buruh pelabuhan
git clone https://github.com/ad-freiburg/completesearch
cd completesearch
docker build -t completesearch .
Baris perintah berikut membuat indeks pencarian dan kemudian memulai server pencarian untuk kumpulan data yang ditentukan melalui variabel DB
(nama subdirektori aplikasi mana pun berfungsi). Di bawah PORT
yang ditentukan, Anda kemudian memiliki UI generik, serta API (lihat Bagian 4 di bawah).
export DB=movies && PORT=1622 && docker run -it --rm -e DB=${DB} -p ${PORT}:8080 -v $(pwd)/applications:/applications -v $(pwd)/data/:/data -v $(pwd)/ui:/ui --name completesearch.${DB} completesearch -c "make DATA_DIR=/data/${DB} DB=${DB} csv pall start"
Baris perintah ini mengunduh dan membuka kompresi CSV, membuat indeks, dan memulai server, semuanya sekaligus. Jika Anda sudah mendownload CSV, maka tidak akan diunduh lagi ( csv:
maka tidak berpengaruh). Jika Anda sudah membuat indeks satu kali, Anda dapat menghilangkan pall:
(yang merupakan singkatan dari precompute all).
Baca bagian ini jika Anda ingin memahami lebih dalam tentang apa yang terjadi dengan baris perintah mewah di atas. Baris perintah pertama-tama membuat image buruh pelabuhan dari kode di repositori ini. Sejauh ini bagus. Ia kemudian menjalankan kontainer buruh pelabuhan, yang memasang tiga volume, yang akan kami jelaskan secara singkat selanjutnya:
aplikasi Folder ini berisi konfigurasi untuk setiap aplikasi. Setiap konfigurasi hanya berisi dua file. Makefile
yang menentukan cara membuat indeks (ini sangat dapat disesuaikan, lihat di bawah). Dan config.js
untuk menyesuaikan UI generik.
data Folder ini berisi file CSV dengan data asli (satu catatan per baris, dalam kolom) dan file indeks. Semuanya memiliki awalan yang sama. Lihat di bawah untuk informasi lebih lanjut tentang indeks.
ui Folder ini berisi kode untuk UI generik. Jika Anda hanya ingin menggunakan CompleteSearch sebagai backend dan membuat UI Anda sendiri, Anda tidak perlu memasang volume ini. Namun, menyenangkan untuk selalu memiliki UI yang berfungsi untuk pengujian, tanpa kerja tambahan apa pun.
Seperti semua mesin pencari, CompleteSearch membuat indeks yang dengannya mesin tersebut dapat menjawab pertanyaan secara efisien. Ini bukan indeks terbalik biasa, tetapi sesuatu yang lebih mewah: indeks setengah terbalik atau indeks hybird (HYB) . Anda tidak perlu memahami hal ini jika Anda hanya ingin menggunakan CompleteSearch. Namun jika Anda tertarik, Anda bisa mempelajarinya lebih lanjut pada publikasi di bawah ini.
Untuk membuat indeks, CompleteSearch memerlukan dua file masukan, satu dengan akhiran .words
dan satu lagi dengan akhiran .docs
. Yang pertama berisi isi dokumen Anda yang dipecah menjadi kata-kata. Yang kedua berisi data yang ingin Anda tampilkan saat mesin pencari hits. Keduanya biasanya berkaitan, namun tidak persis sama. Formatnya sangat sederhana dan dijelaskan dengan contoh di sini.
Jika Anda memiliki keinginan khusus, Anda dapat membuat sendiri kedua file input ini, dari apa pun data Anda. Kemudian Anda memiliki kendali penuh atas apa yang akan dan dapat dilakukan CompleteSearch untuk Anda. Namun, di sebagian besar aplikasi, Anda dapat menggunakan parser CSV generik kami. Dibutuhkan file CSV (satu catatan per baris, dengan jumlah kolom tetap per baris) sebagai masukan, dan dari situ menghasilkan file .words dan .docs .
Penguraian CSV sangat kuat dan dapat disesuaikan. Anda dapat melihat cara penggunaannya di Makefile dari berbagai contoh aplikasi (di subdirektori direktori applications
). Sebagian opsi dijelaskan secara lebih rinci di sini. Untuk daftar lengkapnya, lihat kode yang mem-parsing opsi.
Biner untuk memulai mesin CompleteSearch disebut startCompletionServer
. Ini sangat kuat dan memiliki banyak pilihan. Untuk beberapa contoh penggunaan, Anda dapat melihat Makefile
di applications
direktur dan Makefile
yang disertakan di salah satu contoh aplikasi. Dokumentasi terperinci tentang semua opsi dapat ditemukan di README.md di direktori src.
Setelah dimulai, Anda dapat mengajukan pertanyaan menggunakan UI kami yang umum dan dapat disesuaikan (lihat di atas). Atau Anda bisa bertanya langsung ke backend, melalui HTTP API yang disediakan oleh startCompletionServer
. API ini sangat sederhana dan dijelaskan di akhir halaman ini. Bermain-mainlah dengannya untuk salah satu contoh aplikasi untuk mendapatkan gambaran tentang apa yang dilakukannya. Anda juga dapat melihat kode JavaScript (yang cukup sederhana) dari UI generik untuk mengetahui cara kerjanya dan kegunaannya.
Untuk memamerkan instance CompleteSearch Anda kepada teman-teman, Anda mungkin ingin instance tersebut dijalankan dengan URL yang bagus, dan bukan http://my.weird.hostname.somewhere:76154
. Anggaplah Anda memiliki server web Apache yang berjalan di mesin Anda. Kemudian Anda dapat menambahkan bagian berikut di apache.conf
Anda atau di file konfigurasi terpisah yang disertakan oleh apache.conf
. Anda harus mengganti servername
dengan nama domain yang sepenuhnya memenuhi syarat (FQDN) dari mesin yang menjalankan server web Apache Anda. Anda harus mengganti hostname
dengan FQDN mesin tempat frontend CompleteSearch berjalan. Ini bisa berupa mesin yang sama dengan servername
, tetapi tidak harus sama.
< VirtualHost *:80>
ServerName example.cs.uni-freiburg.de
ServerAlias dblp example.cs.uni-freiburg.de
ServerAdmin webmaster@localhost
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://< hostname >:5000/
ProxyPassReverse / http://< hostname >:5000>/
...
</ VirtualHost >
Berikut beberapa publikasi yang menjelaskan teknik di balik CompleteSearch dan kegunaannya. Pekerjaan ini dilakukan di Max-Planck-Institute for Informatics. Memang sudah lama sekali, namun ternyata fitur dan efisiensi yang diberikan oleh CompleteSearch masih sangat canggih.
Ketik Lebih Sedikit, Temukan Lebih Banyak: Pelengkapan Otomatis Cepat dengan Indeks Ringkas @ SIGIR 2006
Mesin Pencarian Lengkap: Interaktif, Efisien, dan Menuju Integrasi IR&DB @ CIDR 2007
ESTER: pencarian efisien pada teks, entitas, dan relasi @ SIGIR 2007
Perluasan kueri interaktif yang efisien dengan penelusuran lengkap @ CIKM 2007
Pencarian Pelengkapan Otomatis Sensitif Keluaran @ Pengambilan Informasi 2008
Pencarian Teks Lengkap Semantik dengan ESTER: Dapat Diskalakan, Mudah, Cepat @ ICDM 2008