Частичная индексация XML-файла (Bleve)
Я оцениваю пару разных библиотек, чтобы понять, какая из них лучше всего подойдет для меня.
Прямо сейчас я смотрю на Bleve, но я счастлив использовать любую библиотеку.
Я ищу, чтобы индексировать полные файлы, за исключением конкретных, которые в формате XML. Для тех, кого я только хочу, чтобы Bleve индексировал определенные теги, так как большинство тегов бесполезно искать. Я пытаюсь оценить, возможно ли это, но, будучи новичком в Bleve, я не уверен, какую часть мне нужно настроить.
Документация очень хорошая, но я не могу найти этот ответ. Все, что мне нужно, это объяснение с ключевыми словами и шагами, код не требуется, мне просто нужно нажать кнопку, так как я потратил часы, крутя мои колеса с поиском в Google, и я не понимаю, где.
1 ответ
Есть, вероятно, много способов приблизиться к этому. Вот один
Bleve индексирует документы, которые являются коллекциями пар метаданных ключ / значение.
В вашем случае документ может быть представлен двумя парами ключ / значение: имя файла.xml (для однозначной идентификации документа) и содержимое файла.
type Doc struct {
Name string
Body string
}
Проблема в том, что тело - это XML, а Bleve не поддерживает XML "из коробки".
Способ решения этой проблемы - предварительная обработка файла XML путем удаления нежелательных тегов и содержимого. Вы можете сделать это используя стандартную библиотеку encoding / xml.
Для примера аналогичной задачи вы можете увидеть код https://github.com/blevesearch/fosdem-search/
Там они индексируют файл в произвольном формате ( https://github.com/blevesearch/fosdem-search/blob/master/fosdem.ical), анализируя его в формате, который они могут отправить в Bleve для индексации ( https://github.com/blevesearch/fosdem-search/blob/master/ical.go).