"Should I use search engine?"
Absolutely. While all databases allow some sort of full text search, it is your key feature (as far as I got it), so you should use the best of breed. I have made good experiences with ElasticSearch and elasticsearch-mapper-attachments.
As for backend storage: the elasticsearch-mongodb-river supports attachments stored in MongoDB's GridFS.
"Which architecture will be most useful?"
I don't get you here, since first you write that you have to develop an offline application and then you ask for a Web-MVC. I'll give you some notes for both.
In general, I'd suggest a 3-tier server backend, with MongoDB building tier 3, ElasticSearch in tier 2 and a REST/XMLRPC/SOAP API building the frontend, which allows you to use this service from a variety of applications. Not that you should implement some authentication and authorization here. To get this up and running at a reasonable fast time, I'd use Spring Data ElasticSearch together with spring-security. Together with Spring Data REST, this should allow you to have this setup done rather fast, provided you have some experience with Spring.
After you have this set up, you can either create a Web Application which does API calls on your search API or build some sort of Swing Application, which uses the same. Or build both. As for the Web Application, it depends on your functional and non-functional requirements, which I simply don't know – and this can't be answered easily and usually takes extended analysis. There is no "one-size-fits-all" answer to that.
As for the technology to use: For a web fronted, since the search API is developed in Java, I'd stick with it. If you followed my suggestions with the search API: Stick to the same tools, use Spring Web-MVC or Spring Boot. An alternative could be a Node application, depending on your skills. The advantage from decoupling the actual search from the application is that you can basically choose anything you want: Django, Rails, Sails, whatever.
"Should I use HADOOP, since it is an offline app?"
Hadoop is, per definition, networked. I simply don't really get what you mean with this question, but I think it is answered with the above.