Your search mechanism will take as input a multi-word query and will return a list of documents where the given words appear. 1. Your score for this portion of the assignment will be based on the intelligence of your algorithm. The easiest solution is to simply return a list of documents where any of the words appear. Another approach is to give greater weight to (by placing earlier in the result set) documents where more than one of the query words appears. Yet another option is to give greater weight to the documents where the words specified appear closer to one another. For example, if you search for "computer science" and document 1 has computer at position 1 and science at position 2 while document 2 has computer at position 1 and science at position 100, document 1 would be given higher weight. 2. Your program will take as input the directory as before along with a file containing a set of queries. Each line of the file will contain a multi-word query. The output of your program will be a text file results.txt that contains the result of running each query. You are required to: 3. Use Generics when appropriate. 4. Use the java.util data structures where appropriate. 5. Keep in mind that Strings are immutable.