Apa perbedaan antara indeks terbalik dan indeks lama biasa?

99

Dalam rekayasa perangkat lunak, kami membuat indeks sepanjang waktu (misalnya, dalam basis data) tetapi saya juga mendengar banyak orang berbicara tentang indeks terbalik. Apakah ada sesuatu yang secara fundamental berbeda di antara keduanya? Mereka terdengar seperti hal yang sama.

guidoisme
sumber
Untuk memperjelas, Anda bertanya: apa yang berbeda dengan indeks normal ( en.wikipedia.org/wiki/Index_%28database%29 ) yang memecah tabel berdasarkan data yang sudah ada di tabel itu? Apakah itu benar?
jwheron
3
@guidoism Apa yang tidak disebutkan oleh semua orang (meskipun normalocity sebagian menjelaskannya dengan contoh dan lovesh cukup banyak pada tombolnya) adalah indeks terbalik "membalikkan" data dasar agar lebih efisien (mis. menukar kunci / data untuk mencari dari perspektif yang berbeda atau mengurutkan menurut abjad / numerik untuk memungkinkan algoritme pencarian cepat), sedangkan indeks standar menyimpan data saat ditemukan. Referensi "mundur / maju" dan arti literal dari kata "membalikkan" tidak berlaku di sini, melainkan merujuk pada pembalikan data untuk menghasilkan format efisien yang spesifik untuk tugas yang sedang dikerjakan.
TheManWithNoName

Jawaban:

216

Salah satu penggunaan yang umum adalah "... untuk memungkinkan pencarian teks lengkap dengan cepat."

Kedua jenis tersebut menunjukkan arah . Satu membawa Anda maju melalui indeks, dan yang lainnya membawa Anda mundur (kebalikan) melalui indeks. Itu dia. Tidak ada misteri untuk diungkap di sini. Kalau tidak, kedua jenis itu identik, itu hanya pertanyaan tentang informasi apa yang Anda miliki , dan akibatnya informasi apa yang Anda coba temukan.

Untuk menjawab pertanyaan Anda, saya rasa sebenarnya tidak ada cara untuk mengetahui mengapa penggunaannya seperti sekarang ini. Satu-satunya alasan penting untuk mendefinisikan yang mana forwarddan mana yang ada di artinya.inverted adalah agar kita semua dapat membicarakannya, dan semua orang tahu arah mana yang kita bicarakan. Pikirkan tentang istilah "kiri" dan "kanan": keduanya relatif. Mana yang tidak penting, kecuali bahwa setiap orang perlu menyetujui mana yang "kiri" dan mana yang "benar" agar kata-kata itu memiliki makna. Jika, sebagai suatu budaya, kami memutuskan untuk memutar ke kiri dan ke kanan, maka Anda akan memiliki masalah yang sama untuk mengetahui apa itu "belok kanan" vs "belok kiri" karena makna yang disepakati telah berubah. Namun, penamaannya sewenang-wenang,

Dalam komentar Anda di mana Anda bertanya, "tolong jangan hanya mendefinisikan istilah", Anda kehilangan intinya, dan saya pikir Anda hanya terpaku pada kata-kata ketika sama sekali tidak ada perbedaan di antara keduanya.


Untuk kepentingan pembaca di masa mendatang, sekarang saya akan memberikan beberapa contoh indeks "maju" dan "terbalik":

Contoh 1: Pencarian web

Jika Anda berpikir bahwa invers dari suatu indeks adalah seperti invers dari suatu fungsi dalam matematika , di mana invers adalah suatu hal khusus yang memiliki bentuk berbeda, maka Anda salah: bukan itu masalahnya di sini.

Di mesin pencari Anda memiliki daftar dokumen (halaman di situs web), di mana Anda memasukkan beberapa kata kunci dan mendapatkan hasil kembali.

Sebuah indeks ke depan (atau hanya indeks) adalah daftar dokumen , dan mana kata-kata muncul di dalamnya. Dalam contoh penelusuran web, Google merayapi web, membuat daftar dokumen, mencari tahu kata mana yang muncul di setiap laman.

The Indeks terbalik adalah daftar kata-kata , dan dokumen di mana mereka muncul. Dalam contoh pencarian web, Anda memberikan daftar kata (permintaan pencarian Anda), dan Google menghasilkan dokumen (link hasil pencarian).

Keduanya adalah indeks - ini hanya pertanyaan ke arah mana Anda akan pergi. Maju dari dokumen-> ke-> kata, terbalik dari kata-> ke-> dokumen.

Contoh 2: DNS

Contoh lain adalah pencarian DNS (yang mengambil nama host, dan mengembalikan alamat IP) dan pencarian terbalik (yang mengambil alamat IP, dan memberi Anda nama host).

Contoh 3: Sebuah buku

Indeks di bagian belakang buku sebenarnya adalah indeks terbalik , seperti yang didefinisikan oleh contoh di atas - daftar kata, dan di mana menemukannya di dalam buku. Dalam sebuah buku, daftar isi seperti indeks maju : ini adalah daftar dokumen (bab) yang berisi buku itu, kecuali daripada mencantumkan kata-kata di bagian itu, daftar isi hanya memberi nama / deskripsi umum tentang apa. terkandung dalam dokumen-dokumen (bab).

Contoh 4: Ponsel Anda

The Indeks maju di ponsel Anda adalah daftar kontak, dan yang nomor telepon (seluler, rumah, pekerjaan) berhubungan dengan kontak-kontak. The indeks terbalik adalah apa yang memungkinkan Anda untuk secara manual memasukkan nomor telepon, dan ketika anda menekan "dial" Anda melihat nama orang, bukan nomor, karena ponsel telah mengambil nomor telepon dan menemukan Anda kontak yang terkait dengan itu.

jefflunt
sumber
11
Terima kasih atas waktu Anda. tetapi jawaban Anda masih belum informatif. Seperti yang saya sebutkan dalam permintaan bounty saya, saya SANGAT mengerti apa arti istilah yang terlibat dan mengapa istilah itu muncul. Pertanyaan saya adalah: "mengapa orang yang menamai indeks terbalik menyebutnya terbalik padahal kita memiliki tradisi lama yang menyebutnya hanya indeks biasa? Misalnya, indeks di akhir buku, seperti yang Anda tunjukkan, sebenarnya terbalik. Pergi menurut perspektif sejarah, indeks pada akhir buku datang sebelum indeks web. Lalu mengapa membalikkan tradisi? ". Dugaan saya adalah bahwa itu hanya salah satu hal yang baru saja terjadi ...
Manav
1
"Saya kira tidak mungkin untuk mengetahui mengapa tanpa melakukan pemeriksaan historis penggunaan istilah" - Saya berharap seseorang akan melakukan pemeriksaan historis seperti itu dan memberikan jawaban. :-) Karena ini berlawanan dengan arti bahasa umum dari "indeks" cukup mengejutkan. (Satu jawaban yang mungkin adalah bahwa ketika frase "indeks terbalik" pertama kali dipikirkan, frase "indeks" sudah ada untuk beberapa "indeks" terbalik wrt "indeks terbalik", yaitu, terbalik wrt, arti kehidupan nyata dari "indeks ". Dalam hal ini, akan berguna untuk mengetahui mengapa" indeks "maju mendapat nama yang aneh.)
ShreevatsaR
2
@jefflunt hanya bertanya-tanya mengapa pengindeksan maju harus digunakan. Saya secara khusus berbicara tentang contoh penelusuran web di sini. Jadi jika google, sebagai bagian dari pengindeksan maju melakukan daftar dokumen <-> kata-kata di dalamnya , dan pada akhirnya menggunakan daftar kata <-> daftar dokumen dalam pencarian mereka, mengapa daftar dokumen <-> kata-kata dalam mereka ? Dengan kata lain, pertanyaan saya adalah: Seseorang tidak dapat bertanya kepada google kata-kata apa yang ada di halaman tertentu (dokumen) atau terutama akan bertanya di mana kata kunci yang dia cari muncul di halaman. Lalu kenapa melakukan forward indexing?
quickbrownfox
1
Jadi dalam konteks database Relasional tidak ada indeks terbalik? atau indeks tersebut sebenarnya adalah 'indeks terbalik'. Masalah dengan istilah yang "menyenangkan" dalam sastra adalah ketidaktahuan / kesalahan / musyawarah oleh beberapa pionir atau korps yang memulai kesepakatan berbeda dan sebagian masyarakat mengikuti nomenklatur itu. Setiap orang menjadi bingung setelah beberapa saat. Saya yakin ada banyak istilah dalam perangkat lunak yang awalnya dimaksudkan untuk mengatakan A tetapi komunitas yang berbeda sengaja atau keliru menganggapnya sebagai A 'atau B, secara sintaksis di luar jalur. Itu masih membingungkan pelajar baru.
nir
1
@Roylee - Saya belum membaca kertas putih itu. Saya pikir yang Anda tanyakan adalah, "Apakah Anda memperbarui indeks terbalik saat memperbarui indeks maju?" Jika itu pertanyaan Anda, maka jawabannya adalah ya.
jefflunt
26

Mereka menyebutnya terbalik hanya karena indeks maju sudah ada. Ambil contoh mesin pencari, terdiri dari dua bagian: bagian pertama adalah "web crawler dan parser" yang membangun indeks dari dokumen ke kata, bagian kedua adalah database pencarian yang membangun indeks dari kata ke dokumen. Karena indeks pertama ada, kita secara alami menyebut indeks kedua sebagai indeks terbalik.

Jika Anda menamai TOC (Daftar Isi) sebuah buku sebagai indeks, maka Anda harus menyebut indeks di akhir buku sebagai "indeks terbalik". Atau, di sisi lain, Anda dapat memanggil TOC sebagai indeks terbalik.

xeranic
sumber
6
Ini harus menjadi jawaban yang diterima karena menjawab pertanyaan mengapa kita menyebut indeks "terbalik" meskipun itu hanya apa yang dipikirkan semua orang tentang "indeks normal". Indeks SQL b-tree menyimpan untuk setiap kata sebuah pointer ke semua baris ("dokumen") yang memuatnya. Di sana kami menyebutnya "indeks". Tapi di mesin pencari kami tiba-tiba menyebut prosedur yang sama persis "indeks terbalik". Bukan karena itu berbeda secara fundamental, tetapi karena kami pertama kali membuat "indeks maju" (teks terpisah) dan kemudian "membalikkan" -nya. Jadi, secara keseluruhan, nama "inverse" berasal dari proses pembuatannya, bukan dari struktur akhir indeks.
Foo Bar
@xeranic terima kasih atas wawasannya. Pertanyaan cepat: Apakah praktis untuk menghapus entri dari file indeks maju setelah indeks terbalik dibuat?
Roy Lee
3
Saya setuju dengan @FooBar. Jawaban ini harus dipilih sebagai jawaban yang benar. Itu menjawab mengapa kita menciptakan istilah baru inverted index meskipun semua indeks normal dalam hidup kita sudah digunakan sebagai inverted.
Ryan Lyu
7

biasanya ketika berbicara tentang indeks, yang Anda maksud adalah beberapa perhitungan tambahan atau hasil tersimpan dari prosedur yang telah dilakukan untuk mempercepat aplikasi (misalnya MySQL atau RDBMS lainnya. Konsultasikan dengan MySQL dokumen ). Pengindeksan juga dapat dikaitkan dengan caching dll.

Indeks terbalik membuat file dengan struktur yang terutama ditujukan untuk pencarian (teks lengkap).

Indeks terbalik terdiri dari dua file utama:

  • Kosa kata
  • Kejadian

Dalam kosa kata adalah kata-kata umum yang diekstrak dari teks (tentu saja setelah memfilter kata-kata daftar hitam seperti kata ganti). File kejadian memegang koneksi antara kata dan dokumen (word1 muncul di doc1 dan doc2, bukan di doc3). Itu direpresentasikan dalam bentuk matriks.

Proses pengindeksan - indeks terbalik

Pada gambar di atas ditunjukkan proses pembuatan dua file yang disebutkan.

Jika Anda lebih terlibat dalam masalah ini, saya dapat merekomendasikan Anda sebuah buku hebat yang ditulis oleh Ricardo Yated - Pengambilan Informasi Modern ( Lihat di Amazon ) - tentang halaman 200 saya rasa.

Semoga membantu :-)

Bery
sumber
Ini adalah jawaban yang sangat bagus karena menjelaskan apa sebenarnya indeks terbalik. Itu melewati gagasan pengindeksan maju dan pengindeksan terbalik yang berbeda dari algoritma yang digunakan untuk kemampuan pencarian yang diaktifkan dengan membuat dan membalikkan indeks.
AN6U5
6

normalocity telah sangat membedakan antara indeks maju dan indeks terbalik tetapi untuk pertanyaan mengapa satu disebut indeks maju dan yang lainnya indeks terbalik, mungkin inilah mengapa mereka disebut seperti itu ---

Mengambil contoh mesin pencari merangkak dan mengindeks (atau membangun indeks untuk sebuah buku), indeks maju dapat dibangun secara bersamaan saat Anda merayapi halaman web (atau membaca buku) atau maju . Jadi jika Anda memiliki 10 halaman web untuk dirayapi (atau 10 bab dalam sebuah buku) Anda dapat merayapi halaman web pertama (membaca bab pertama) dan kemudian membuat daftar kata-kata yang muncul di halaman web (kata-kata yang muncul di bab) dan melanjutkan proses ini untuk halaman web lain (bab lain) sehingga pada saat Anda merayapi 10 halaman web (baca semua 10 bab) indeks maju Anda selesai dengan setiap halaman web (bab) menunjuk ke daftar kata yang ada di dalamnya .

Tetapi untuk membuat indeks terbalik Anda harus merayapi 10 halaman web (baca 10 bab) dan kemudian mengambil setiap kata dari setiap daftar dokumen dan mencari tahu dokumen mana yang mengandung kata itu. Jadi ini seperti mundur setelah Anda menjelajahi halaman web (baca bab dari buku ini) . Jadi itu disebut indeks terbalik.

Ini hanya spekulasi saya.

lovesh
sumber
5

Ada banyak jenis indeks. Misalnya, B-tree, R-tree, hash ... Untuk tujuan yang berbeda, kita harus memilih indeks yang benar.

Indeks terbalik adalah indeks yang spesial. Indeks terbalik biasanya digunakan di mesin pencari teks lengkap. Gunakan indeks terbalik, kita dapat menemukan lokasi kata dalam dokumen (atau kumpulan dokumen) secepat mungkin. Pikirkan tentang batas memori dan cpu, indeks lain tidak dapat menyelesaikan pekerjaan ini.

Anda dapat membaca dokumen Lucene untuk lebih jelasnya. Ini adalah mesin pencari open source. http://lucene.apache.org/java/docs/index.html

virushuo
sumber
3

Istilah "Indeks Kata Terbalik" mengacu pada perubahan hubungan satu dokumen yang berisi banyak kata, ke setiap kata unik yang berisi (atau mengidentifikasi) daftar banyak dokumen. Ini secara efektif mengambil Hubungan Satu-ke-Banyak (Dokumen ke Kata) dan Membalik (atau membalikkan) sedemikian rupa sehingga Hubungan Satu-ke-Banyak yang "Terbalik" sekarang ada, yang masing-masing kata-unik terkait dengan Banyak- Dokumen (yaitu, semua yang mengandung kata itu). Asalnya benar-benar sesederhana itu, dan istilah "indeks terbalik" digunakan untuk mendeskripsikan indeks manual dari jenis yang sama jauh sebelum komputer dan pengindeksan elektronik berkecepatan tinggi bahkan ada (ya, memang, saya sudah tua, programmer tua, hampir cukup tua untuk menganggap Grace Hopper sebagai "wanita muda yang manis" usia yang sesuai untuk pacaran kembali ketika COBOL adalah bahasa baru yang berkilau). Mohon jangan buang kami, ya ampun dulu, karena kami terkadang memberikan satu atau dua informasi sejarah yang berguna, dan bahkan mungkin berharga, - saat RAM pribadi kami masih berfungsi. [menyeringai]

pengguna1009
sumber
2

dalam indeks terbalik, kami memiliki bentuk berikut:

word1-> daftar dokumen tempat itu muncul (urutan diurutkan)

word2-> daftar dokumen tempat itu muncul (urutan diurutkan)

Ini sangat berguna untuk pemrosesan kueri mesin telusur karena memungkinkan kami menemukan dokumen tempat kata itu muncul.

Anda dapat menggunakan mesin learing yang diawasi untuk membuat indeks terbalik ini.

Programmer
sumber
6
Kedengarannya seperti indeks bagi saya, apa yang terbalik tentang itu?
guidoisme
2
@guidoism Indeks terbalik adalah kebalikan dari indeks maju. indeks maju menyimpan daftar kata untuk setiap dokumen. Misalnya Doc-> w1, w2
Programmer
Saya masih tidak menemukan perbedaan apa pun antara indeks Teruskan dan Terbalik (dalam hal cara kerjanya, biarkan bit penamaannya). Baik bagi saya, tampak seperti indeks yang memetakan bidang ke sekumpulan id dokumen. Ini adalah bagaimana saya memahami bagaimana oracle btree (atau disebut indeks maju) mengatur data. Saya tidak melihat perbedaan apa pun pada prinsip indeks terbalik. Memetakan Doc -> w1, w2, w3 tampak seperti proposisi yang tidak efisien bagi saya dalam hal pencarian. Bertanya-tanya mengapa ini terjadi? Itu membuat saya kembali ke titik awal. :-).
pengguna1189332
@ Pemrogram Pertanyaan cepat: Apakah praktis untuk menghapus entri dari file indeks maju setelah indeks terbalik dibuat?
Roy Lee
0

Satu perbedaan lagi:

Menangani pembaruan dengan indeks terbalik itu mahal dibandingkan dengan indeks maju.

Indeks maju menangani pembaruan dengan mudah dengan merefleksikan perubahan hanya dalam indeks dokumen yang sesuai, sedangkan pada indeks terbalik, perubahan yang sama harus tercermin dalam beberapa posisi di seluruh indeks terbalik.

Siva Kumar
sumber