4 Indeks konstruksi
Dalam bab ini, kita melihat bagaimana membangun sebuah indeks terbalik. Kami akan memanggil proses ini indeks pembangunan atau pengindeksan dan proses pengindeksan atau mesin yang Indexer melakukan hal yang pengindeks. Rancangan algoritma pengindeksan diatur oleh hardware kendala. Oleh karena itu kita akan memulai bab ini dengan tinjauan
dasar-dasar perangkat keras komputer yang relevan untuk pengindeksan. Kami kemudian memperkenalkan.diblokir sangat besar seperti web, pengindeksan harus didistribusikan melalui kelompok komputer dengan ratusan atau ribuan ofmachines. Kita membahas hal ini dalam semacam berbasis pengindeksan, yang efisien mesin tunggal algoritma yang dirancang untuk statis koleksi yang dapat dilihat sebagai yang lebih scalable versi semacam dasar pengindeksan berbasis algoritma kita diperkenalkan. Bagian menjelaskan single-pass di memori pengindeksan, sebuah algoritma yang memiliki sifat scaling bahkan lebih baik karena tidak memegang kosa kata \di memori. Indeks konstruksi berinteraksi dengan beberapa topik yang dicakup dalam bab-bab lain buku ini. Kebutuhan yang pengindeks teks mentah, tapi dikodekan dalam dokumen banyak cara (lihat. Kompresi dan dekompresi Indexers intermediate file dan indeks akhir .Dalam pencarian web, dokumen tidak pada sistem file lokal, tapi harus spider atau merangkak. Di perusahaan pencarian, sebagian besar dokumen yang terangkum dalam manajemen konten bervariasi sistem, aplikasi email dan database. Sementara sebagian besar aplikasi ini dapat diakses melalui http, asli API biasanya lebih efisien.
Hardware
Banyak keputusan ketika membangun sebuah sistem pencarian informasi didasarkan pada
karakteristik dari sistem perangkat keras komputer terus berlari. Karena itu kita memulai bab ini dengan tinjauan singkat perangkat keras komputer. dasar daftar hardware yang akan kita butuhkan dalam buku ini untuk memotivasi sistem IR desain berikut.:
Akses ke data dalam memori jauh lebih cepat daripada akses data pada disk. Ini mengambil beberapa clock cycle (mungkin 5 × 10-9 detik) untuk mengakses byte memori, tetapi lebih lama untuk transfer dari disk (sekitar 2 × 10-8 detik). Ketika melakukan sebuah disk membaca atau menulis, butuh beberapa saat untuk kepala disk untuk pindah ke bagian disk tempat data berada. Sistem operasi umumnya membaca dan menulis seluruh blok. Dengan demikian, membaca satu byte dari disk dapat mengambil waktu sebanyak membaca seluruh blok. Ukuran blok dari 8 KB, 16 KB, 32 KB dan 64 KB yang umum. Kita sebut bagian BUFFER dari memori utama di mana sebuah blok sedang dibaca atau ditulis disimpan buffer. Data transfer fromdisk tomemory akan ditangani oleh systembus, bukan oleh prosesor. Ini berarti bahwa prosesor yang tersedia untuk memproses data saat disk I / O. Kita dapat memanfaatkan fakta ini untuk mempercepat transfer data dengan dikompresi menyimpan data pada disk. Server yang digunakan dalam sistem IR biasanya memiliki beberapa GB memori utama, kadang-kadang puluhan GB. Ruang disk yang tersedia adalah beberapa kali lipat lebih besar.
Kosa kata dalam pertama berlalu dan membangun indeks terbalik di detik berlalu. Konstruksi indeks algoritma yang dijelaskan dalam bab ini semua melakukan melewati satu data. memberikan referensi untuk multi-pass algoritma yang lebih baik dalam aplikasi tertentu, misalnya, ketika disk ruang langka.
Reuters-RCV1 koleksi model kami koleksi sebuah koleksi dengan kira-kira 1 GB teks. Terdiri dari sekitar 800.000 dokumen yang dikirim melalui Reuters PR Wire selama satu Reuters-RCV1 memiliki 100million bukti. Mengumpulkan koleksi menggunakan 4 byte masing masing untuk termID dan karena itu akan memerlukan Penyimpanan 0,8 GB. Khaskoleksi saat ini sering satu atau dua perintah besarnya lebih besar daripada Reuters-RCV1. salah satu yang menggunakan disk. Untuk dapat diterima kecepatan, persyaratan pusat
algoritma semacam itu adalah bahwa hal itu meminimalkan jumlah random disk mencari
selama pemilahan - sequential disk dibaca jauh lebih cepat daripada mencari seperti yang kita SORT plained .Salah satu solusinya adalah blocked sort-berbasis algoritma pengindeksan
Indexing algoritma atau BSBI segmen koleksi menjadi beberapa bagian dengan ukuran yang sama,
Diblokir berbasis pengindeksan semacam
Langkah-langkah dasar dalam membangun non-posisi indeks. Kami pertama-tama membuat melewati perakitan koleksi semua docID istilah-pasangan. Kami kemudian menyortir berpasangan dengan istilah sebagai kunci dominan dan docID sebagai kunci sekunder. Akhirnya, kami mengatur untuk setiap docIDs istilah ke daftar posting dan menghitung statistik seperti frekuensi term dan dokumen. Untuk koleksi yang kecil, semua ini dapat dilakukan di memori. Dalam bab ini, kami akan menjelaskan metode untuk koleksi besar yang memerlukan penggunaan sekunder penyimpanan. Referensi untuk multi-pass algoritma yang lebih baik dalam aplikasi tertentu, misalnya, ketika disk ruang langka. Kami akan bekerja sama dengan Reuters-RCV1 koleksi model kami koleksi dalam bab ini, sebuah koleksi dengan kira-kira 1 GB teks. Terdiri dari sekitar 800.000 dokumen yang dikirim melalui Reuters PR Wire selama satu tahun antara 20 Agustus 1996, dan 19 Agustus 1997. Dokumen tipikal
ditunjukkan, tetapi perhatikan bahwa kita akan mengabaikan informasi multimedia
seperti gambar dalam buku ini dan hanya dapat prihatin dengan teks. Reuters - RCV1 mencakup berbagai topik internasional, termasuk politik, bisnis, olahraga dan (seperti pada contoh) ilmu pengetahuan. Beberapa statistik kunci koleksi diperlihatkan pada Tabel 4.2. Reuters-RCV1 memiliki 100million bukti. Mengumpulkan semua termID-pasang docID koleksi menggunakan 4 byte masing-masing untuk termID dan karena itu akan memerlukan docID Penyimpanan 0,8 GB. Khas koleksi saat ini sering satu atau dua perintah besarnya lebih besar daripada Reuters-RCV1. Anda dapat dengan mudah melihat bagaimana seperti koleksi akan membanjiri bahkan komputer besar jika kita mencoba untuk menyortir mereka termIDdocID pasang di memori. Jika ukuran file antara selama indeks konstruksi dalam faktor kecil memori yang tersedia, maka kompresi teknik yang diperkenalkan dalam Bab 5 dapat membantu; tetapi file posting banyak koleksi yang besar tidak bisa masuk ke dalam memori bahkan setelah kompresi.
algoritma semacam itu adalah bahwa hal itu meminimalkan jumlah random disk mencari
selama pemilahan - sequential disk dibaca jauh lebih cepat daripada mencari seperti yang kita SORT plained dalam Bagian 4.1. Salah satu solusinya adalah blocked sort-berbasis algoritma pengindeksan Indexing algoritma atau BSBI. BSBI (i) segmen koleksi menjadi beberapa bagian dengan ukuran yang sama,
Single-pass di memori pengindeksan
Blocked sort berbasis skala pengindeksan memiliki sifat yang sangat baik, tetapi kebutuhan
struktur data untuk pemetaan istilah untuk termIDs. Untuk koleksi yang sangat besar,
struktur data ini tidak muat ke dalam memori. Alternatif yang lebih scalable adalah
single-pass di memori atau SPIMI pengindeksan. SPIMI menggunakan istilah bukannya termIDs,
pengindeksan menulis setiap blok kamus ke disk dan kemudian mulai kamus baru untuk
blok berikutnya. SPIMI dapat mengindeks koleksi dari berbagai ukuran asalkan ada cukup
ruang disk yang tersedia. Perbedaan antara BSBI dan SPIMI adalah bahwa SPIMI menambahkan posting langsung ke daftar posting (baris 10). Daripada pertama mengumpulkan semua pasangan termID-docID. kemudian menyortir mereka (seperti yang kita lakukan di BSBI), masing-masing daftar posting adalah dinamis (yang adalah, ukuran disesuaikan seperti tumbuh) dan akan segera tersedia untuk mengumpulkan posting. Ini memiliki dua keuntungan. Hal ini lebih cepat karena tidak ada menyortir diperlukan. Dan ini akan menghemat memori karena kita melacak istilah milik sebuah daftar posting ke, sehingga termIDs dari posting tidak perlu disimpan. Sebagai hasilnya, blok bahwa setiap panggilan dari Invert SPIMI-proses dapat lebih besar dan indeks proses pembangunan secara keseluruhan lebih efisien. Karena kita tidak tahu betapa besar daftar posting sebuah istilah akan terjadi ketika Pertemuan pertama kita, kita mengalokasikan ruang untuk daftar posting singkat pada awalnya dan dua kali lipat setiap kali ruang penuh (baris 8-9). Ini berarti bahwa beberapa memori akan sia-sia dan melawan tabungan memori dari kelalaian dari termIDs dalam struktur data menengah. Namun, memori secara keseluruhan persyaratan untuk dibangun secara dinamis indeks blok di SPIMI adalah masih lebih rendah dari pada di BSBI.