Как Сфинкс может так быстро сортировать? - PullRequest
3 голосов
/ 07 ноября 2010

Допустим, я ищу "детка".Сфинкс возьмет все документы, в которых есть «ребенок», и затем отсортирует их, используя мой собственный алгоритм.(РАСШИРЕННЫЙ режим).

Вопрос в том, как это можно сортировать так быстро?Как он собирает миллионы записей и затем сортирует их в течение миллисекунд?

1 Ответ

9 голосов
/ 07 ноября 2010

О, вы спрашиваете о магии.Sphinx (и Lucene, и многие другие поисковые системы) используют инвертированный индекс .

По сути, каждый документ разбивается на токены;Индекс поиска состоит из сопоставления токенов с документами, называемыми списком проводок .Обработка запроса включает в себя просмотр списков проводок условий запроса и поиск соответствующих документов.Чтобы сделать это быстрее, токены хранятся в виде списка целых чисел.Это может быть сделано еще более эффективным путем сжатия индекса .

...