В інженерії програмного забезпечення ми постійно створюємо індекси (наприклад, в базах даних), але я також чую, як багато людей говорять про перевернуті індекси. Чи є між ними щось принципово різне? Вони звучать як одне і те ж.
В інженерії програмного забезпечення ми постійно створюємо індекси (наприклад, в базах даних), але я також чую, як багато людей говорять про перевернуті індекси. Чи є між ними щось принципово різне? Вони звучать як одне і те ж.
Відповіді:
Одним із загальноприйнятих методів є "..., щоб дозволити швидкий повнотекстовий пошук".
Два типи позначають спрямованість . Один веде вас вперед через індекс, а інший - назад (через індекс) через індекс. Це воно. Тут немає жодної таємниці, яку можна розкрити. В іншому випадку два типи однакові, це лише питання про те, якою інформацією ви володієте , і як результат, яку інформацію ви намагаєтеся знайти.
Щоб вирішити ваш запит, я не думаю, що насправді існує спосіб дізнатись, чому використання є таким, яке є сьогодні. Єдина причина, через яку важливо визначити, яке саме значення.forward
а яка - inverted
це те, щоб ми всі могли про них поговорити, і всі знають, про який напрям ми говоримо. Подумайте про терміни "ліворуч" і "праворуч": вони відносні. Що є, що не має значення, за винятком того, що всі мають домовитись, який з них "лівий", а який - "правильний", щоб слова мали значення. Якщо ми, як культура, вирішили перевернути ліворуч і праворуч, тоді у вас виникне те саме питання, що з'ясовувати, що таке "правий поворот" проти "лівий поворот", оскільки змінений узгоджений сенс змінився. Однак найменування є довільним,
У вашому коментарі, де ви запитуєте, "будь ласка, не просто визначайте терміни", ви пропускаєте суть, і я думаю, що ви просто зациклюєтесь на формулюванні, коли між ними абсолютно немає різниці.
На користь майбутніх читачів я зараз наведу кілька прикладів "вперед" та "перевернуто":
Якщо ви думаєте, що інверсія індексу - це щось на зразок зворотної функції в математиці , де інверсія - це особлива річ, яка має іншу форму, то ви помиляєтесь: це не так.
У пошуковій системі у вас є список документів (сторінок на веб-сайтах), де ви вводите деякі ключові слова і отримуєте результати назад.
Уперед індекс (або просто індекс) є список документів , і які слова з'являються в них. У прикладі веб-пошуку Google сканує Інтернет, будуючи список документів, з'ясовуючи, які слова відображаються на кожній сторінці.
Інвертований індекс є список слів , а також документи , в яких вони з'являються. У прикладі пошуку в Інтернеті ви надаєте список слів (пошуковий запит), а Google створює документи (посилання на результати пошуку).
Вони обидва індексу - це лише питання, в якому напрямку ви їдете. Вперед - від документів-> до-> слів, перевернутий - від слів-> до-> документів.
Іншим прикладом є пошук у DNS (який приймає ім'я хоста та повертає IP-адресу) та зворотний пошук (який приймає IP-адресу та дає вам ім'я хосту).
Індекс на звороті книги насправді є перевернутим покажчиком , як визначено на прикладах вище - переліком слів і де їх можна знайти в книзі. У книзі зміст подібний до прямого індексу : це перелік документів (розділів), які книга містить, за винятком того, що замість перелічення слів у цих розділах, зміст просто дає назву / загальний опис того, що містяться в цих документах (главах).
Індекс переадресації у вашому мобільному телефоні - це ваш список контактів і те, які номери телефонів (стільниковий, домашній, робочий) пов'язані з цими контактами. Інвертований індекс є те , що дозволяє вручну ввести номер телефону, і коли ви натиснете «набрати» ви побачите ім'я людини, а не кількість, тому що ваш телефон взяв номер телефону і знайшов вас контакт , пов'язаний з ним.
Вони назвали це перевернутим лише тому, що вже є індекс вперед. Візьмемо приклад пошукової системи, яка складається з двох частин: перша частина - це «веб-сканер та синтаксичний аналізатор», які будують індекс від документа до слова, друга частина - це база даних, яка створює індекс від слова до документа. Оскільки перший індекс існує, ми, природно, називаємо другий індекс перевернутим індексом.
Якщо ви називаєте TOC (Зміст) книги як індекс, то слід назвати індекс в кінці книги "перевернутим індексом". Або, з іншого боку, ви можете викликати TOC як інвертований індекс.
inverted index
хоча всі нормальні показники в нашому житті вже використовуються як inverted
.
як правило, говорячи про індекс, ви маєте на увазі деякі додані обчислення або збережені результати процедур, які були зроблені з метою пришвидшення роботи програми (наприклад, MySQL або інша СУБД. Зверніться до MySQL у документи ). Індексація також може бути пов’язана з кешуванням тощо.
Інвертований індекс створює файл зі структурою, яка є головним чином цільовою для пошуку (повного тексту).
Інверсований індекс складається з двох основних файлів:
У словниковому запасі є загальновживані слова, витягнуті з тексту (звичайно, після фільтрування чорного списку слів, таких як займенники). Файл повторень містить зв'язок між словами та документами (слово1 відображається в doc1 та doc2, а не в doc3). Він представлений у формі матриці.
На зображенні вище показано процес створення двох згаданих файлів.
Якщо вас більше цікавить ця проблема, я можу порадити вам чудову книгу, написану Рікардо Ятедом - Сучасний пошук інформації ( див. Її на Amazon ) - приблизно на сторінці 200.
Сподіваюся, це допоможе :-)
normalocity вже чудово розрізнив прямий та перевернутий індекс, але для питання, чому один називається прямим індексом, а інший інвертованим індексом, можливо, саме тому вони називаються саме так ---
На прикладі сканування та індексування пошукової машини (або побудови індексу для книги), індекс прямої передачі можна створити одночасно, коли ви скануєте веб-сторінки (або читаєте книгу) або рухаєтеся вперед . Отже, якщо у вас є 10 веб-сторінок для сканування (або 10 глав у книзі), ви можете просканувати першу веб-сторінку (прочитати перший розділ), а потім скласти список слів, що з’являються на веб-сторінці (слова, що з’являються в главі), і продовжити цей процес для інших веб-сторінок (інших розділів), тому до того часу, коли ви просканували всі 10 веб-сторінок (прочитайте всі 10 розділів), ваш індекс вперед завершується кожною веб-сторінкою (главою), що вказує на список слів, який вона містить .
Але щоб зробити інвертований індекс, вам потрібно просканувати всі 10 веб-сторінок (прочитати 10 глав), а потім взяти кожне слово з кожного списку документів і з’ясувати, які документи містять це слово. Отже, це як повернутися назад, коли ви перескакуєте веб-сторінки (читайте глави книги) . Тому його називають перевернутим індексом.
Це лише моя міркування.
Існує багато типів індексу. Наприклад, B-дерево, R-дерево, хеш ... Для різних цілей ми повинні вибрати правильний індекс.
Інвертований індекс - спеціальний. Інвертований індекс, який зазвичай використовується в повнотекстовій пошуковій системі. Використовуючи інверсований індекс, ми можемо дізнатись про місцезнаходження слова в документі (або наборі документів) якомога швидше. Подумайте про обмеження пам’яті та процесора, інший індекс не може закінчити цю роботу.
Ви можете прочитати люценовий документ, щоб дізнатися більше. Це пошукова система з відкритим кодом. http://lucene.apache.org/java/docs/index.html
Термін "Інвертований індекс слів" означає зміну співвідношення одного документа, що містить багато слів, до кожного унікального слова, що містить (або ідентифікує) перелік багатьох документів. Це фактично бере взаємозв'язок "один-до-багатьох" ("Документи до слів") і перевертає (або перевертає) його таким чином, що тепер існує нова "інвертована" зв'язок "один-до-багатьох", кожна з яких є унікальним словом, що стосується багатьох Документи (тобто всі, що містять це слово). Його походження насправді настільки просто, і термін "перевернутий індекс" використовувався для опису однотипних покажчиків задовго до того, як навіть існували комп'ютери та електронна високошвидкісна індексація (так, правда, я старий програміст, майже досить старий, щоб вважати Грейс Хоппер "милою панночкою" вік, відповідний для залицяння, коли COBOL був новою блискучою мовою). Будь ласка, не відкидайте нас гезерами поки що, оскільки ми можемо час від часу надавати корисний, а можливо, навіть цінний історичний порядок чи два - коли наша особиста ОЗУ все ще працює, тобто. [усміхається]
у інвертованих індексах ми маємо таку форму:
word1-> список документів, у яких воно відбувається (впорядковано)
word2-> перелік документів, в яких він зустрічається (відсортовано)
Це дуже корисно для обробки запитів пошукової системи, оскільки дозволяє знайти документи, у яких відбувається слово.
Ви можете використовувати контрольоване машинне навчання для побудови цього перевернутого індексу.
Ще одна різниця:
Поводження з оновленнями з інвертованим індексом коштує дорого порівняно з індексом прямого напрямку.
Індекс вперед обробляє оновлення легко, відображаючи зміни лише у відповідному індексі документа, тоді як в інвертованому індексі одна і та ж зміна повинна відображатися в декількох позиціях в інвертованому індексі.