Мне нужно разработать автономное приложение со следующими функциями:
Мои вопросы:
Абсолютно. Хотя все базы данных позволяют какой-либо вид полнотекстового поиска, это ваша ключевая функция (насколько я понял), поэтому вы должны использовать лучшее в своем роде. У меня есть хороший опыт работы с ElasticSearch и elasticsearch-mapper-attachments .
Что касается внутреннего хранилища: elasticsearch-mongodb-river поддерживает вложения, хранящиеся в GridFS MongoDB.
Я вас не понимаю, так как сначала вы пишете, что вам нужно разработать автономное приложение, а затем просите Web-MVC. Я дам вам несколько заметок для обоих.
В общем, я бы предложил трехуровневую серверную часть с MongoDB, создающей уровень 3, ElasticSearch на уровне 2 и REST/XMLRPC/SOAP API, создающим внешний интерфейс, что позволяет вам использовать эту службу из различных приложений. Не то чтобы вы должны реализовать здесь некоторую аутентификацию и авторизацию. Чтобы запустить это в разумные сроки, я бы использовал Spring Data ElasticSearch вместе с spring-security. Вместе с Spring Data REST это должно позволить вам выполнить эту настройку довольно быстро, если у вас есть некоторый опыт работы с Spring.
После того, как вы настроите эту настройку, вы можете либо создать веб-приложение, которое выполняет вызовы API для вашего поискового API, либо создать какое-то приложение Swing, которое использует то же самое. Или построить оба. Что касается веб-приложения, оно зависит от ваших функциональных и нефункциональных требований, которых я просто не знаю, и на это нелегко ответить, и обычно требуется расширенный анализ. На этот вопрос нет универсального ответа.
Что касается используемой технологии: для веб-интерфейса, поскольку поисковый API разработан на Java, я бы придерживался его. Если вы следовали моим советам по API поиска: придерживайтесь одних и тех же инструментов, используйте Spring Web-MVC или Spring Boot. Альтернативой может быть приложение Node, в зависимости от ваших навыков. Преимущество отделения фактического поиска от приложения заключается в том, что вы можете выбрать все, что захотите: Django, Rails, Sails, что угодно.
Hadoop по определению является сетевым. Я просто не совсем понимаю, что вы имеете в виду под этим вопросом, но я думаю, что на него ответили выше.
ненор
Нау
ненор