Как реализовать полнотекстовый поиск по зашифрованному документу, имеющему несколько страниц?

У меня есть сотни документов, и каждый документ состоит из нескольких страниц. Пользователь может искать в документе слово или предложение. Теперь я ожидаю взамен все файлы, содержащие искомый текст.

В настоящее время используются остальные API с Angular в качестве внешнего интерфейса.

Я только что проверил эластичный поиск.

и

Повторный поиск в полнотекстовом поиске

Мне нравится повторный поиск, но я не уверен, насколько он безопасен, потому что он сначала создает индексы для фактических данных.

Моя точка зрения:

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

person Ben P    schedule 19.06.2019    source источник
comment
У меня нет никакого опыта работы с упомянутыми технологиями, но, что интересно, расшифровка и последующий поиск каждого документа в произвольно большом наборе совсем не практичны. Я подозреваю, что здесь есть компромисс, который вам, возможно, придется сделать.   -  person Luke Joshua Park    schedule 20.06.2019
comment
Да, вы правы, это будет накладные расходы на систему. Большинство этих фреймворков оптимизируют поиск на основе индекса. Индекс должен быть фактических данных.   -  person Ben P    schedule 20.06.2019


Ответы (1)


После стольких дней изучения документации Elastic search и Redis я пришел к выводу:

Redis и EmaticSearch для зашифрованного контента

  • Redis Search работает быстрее по сравнению с Elasticsearch, однако у Redis Search меньше поддержки сообщества. Инструменты Elasticsearch, такие как kibana, logstash, очень полезны при просмотре и анализе данных.

  • Для зашифрованного контента используйте повторный поиск с опцией NOINDEX и сохраните свои первичные данные в зашифрованном хранилище данных. В моем случае основным хранилищем данных является ведро s3. RediSearch нужно только сохранить инвертированный индекс.

  • AWS Elasticache предоставляет лямбда-функцию, которая может создавать индексы зашифрованных данных в состоянии покоя. Шифрование применяется только к объекту данных в состоянии покоя, а НЕ к метаданным. Следовательно, вы можете выполнять поиск по метаданным, но это не будет полный текст. Для полнотекстового поиска данные явно передаются в Elasticsearch для индексации.

Проверьте эту ссылку

Вариант облачного поиска AWS

  • Другой вариант — облачный поиск AWS. CloudSearch имеет возможность индексировать элементы из корзин с шифрованием на стороне сервера. Вы должны передать надлежащие учетные данные для доступа к данным.

проверьте эту ссылку2:

  • Однако облачный поиск AWS стоит дорого. Они будут взимать плату за все выполненные операции.
person Ben P    schedule 10.07.2019