Как искать запросы по фразам в инвертированной структуре индекса? - PullRequest
4 голосов
/ 17 апреля 2010

Если мы хотим найти запрос типа «t1 t2 t3» (t1, t2, t3 должны быть поставлены в очередь) в структуре с обратным индексом, какие способы мы должны сделать?

1-Сначала мы ищем термин «t1» и находим все документы, содержащие «t1», затем делаем эту работу для «t2», а затем «t3». Затем найдите документы о том, что позиции «t1», «t2» и «t3» находятся рядом друг с другом.

2-Сначала мы ищем термин «t1» и находим все документы, содержащие «t1», затем во всех найденных нами документах мы ищем «t2», а затем, в результате этого, мы находим документы, содержит "t3".

У меня полный инвертированный индекс. Я хочу знать, какие способы оптимизированы выше, (1) или (2)?

Большое спасибо.

1 Ответ

4 голосов
/ 17 апреля 2010

Как хорошо объясняется в википедии ,

Существует два основных варианта инвертированные индексы: A уровень записи инвертированный индекс (или инвертированный индекс файла или просто инвертированный файл ) содержит список ссылок на документы для каждого слово. A Инвертированный индекс уровня слова (или полный инвертированный индекс или инвертированный список ) дополнительно содержит позиции каждое слово в документе. последняя форма предлагает больше функциональности (как поиск фразы), но нужно больше время и пространство, которое будет создано.

Поскольку вы не сообщите нам, какой у вас вариант, мы не можем точно ответить на ваш вопрос, но размышление о каждой возможности поможет.

Открытие и поиск документов, как правило, являются дорогостоящей операцией, если только ваши документы не являются необычно маленькими, поэтому вы хотите минимизировать это - а опция (2) на самом деле не минимизирует ее. Если у вас есть инвертированный список , с опцией (1) вам даже не нужно открывать любой документ; если у вас есть только инвертированный файл , вам неизбежно потребуется открыть документы и отсканировать их (поскольку в противном случае вам не хватает информации для подтверждения смежности слов) - но по крайней мере с опцией (1) вы минимизируете число документов, которые нужно открывать и сканировать (только те, которые находятся на пересечении списков документов, содержащих каждое слово).

Таким образом, в любом случае вариант (1) является более многообещающим (если ваши документы не являются особенно маленькими). ​​

...