Частичная индексация 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).

Другие вопросы по тегам