Мне нужно создать индекс поиска для коллекции HTML-страниц.
У меня нет опыта в реализации индекса поиска вообще, поэтому любая общая информация о том, как его построить, какую информацию хранить, как реализовать расширенные поиски, такие как "целая фраза", ранжирование результатов и т.д.
Я не боюсь самостоятельно его создавать, хотя я был бы счастлив повторно использовать существующий компонент (или использовать его для запуска прототипа). Я ищу решение, доступное из С++, желательно, не требуя дополнительных установок во время выполнения. Содержимое является статическим (поэтому имеет смысл объединить информацию поиска), но поиск может потребовать накопления результатов из нескольких таких репозиториев.
Я могу сделать несколько образованных догадок: создать карту word ==> pages
для всех (релевантных) слов, ранг может быть присвоен отображению через протуберанс (h1 > h2 > ... > <p>
) и близость к вершине. Расширенные поиски могут быть построены поверх этого: поиск фразы "homo sapiens"
может отображать все страницы, содержащие "homo"
и "sapiens"
, а затем сканировать все страницы, возвращаемые для мест, где они встречаются вместе. Тем не менее, есть много проблемных сценариев и неотвеченных вопросов, поэтому я ищу ссылки на то, что должно быть огромным количеством существующей работы, которая каким-то образом ускользает от моего google-fu.
[edit for bounty]
Лучший ресурс, который я нашел до сих пор это и ссылки оттуда.
У меня есть дорожная карта для экспериментальной системы, однако я все еще ищу:
- Справочные материалы, касающиеся создания индекса и отдельных шагов.
- доступные реализации отдельных шагов
- многоразовые реализации (с ограничениями выше среды)