A Simple Search Engine

Alex Edwards 0 Tallied Votes 10K Views Share

This is a simple Search Engine that contains tokenized words as keys, in which they will return values associated with them in an ArrayList.

All that is required is a text file from a valid extension.

import java.util.*;
import java.io.*;

public class SearchEngine{
	public static void main(String[] args){
		Hashtable<String, ArrayList<String> > ht = new Hashtable<String, ArrayList<String> >();
		Scanner kb = new Scanner(System.in);
		System.out.println("Enter the filename that you want to Search values for.");
		BufferedReader br = null;
		try{
			br = new BufferedReader(new FileReader(kb.nextLine()));//reads information from the file specified by user input
			System.out.println("The file was read. Processing information, please wait...");

			while(br.ready()){//should repeat until there are no more lines to read
				String line = br.readLine();//assigns the line read by the reader to line
				String[] result = line.split("\\s");//tokenizes the line into seperate strings, based on spaces only

				for(int i = 0; i < result.length; i++){
					if(!ht.containsKey(result[i])){
						ArrayList<String> temp = new ArrayList<String>(1);
						temp.add(line);
						ht.put(result[i], temp);//assigns a key to anonymous ArrayList that stores the value
					}
					else{
						ArrayList<String> temp = (ArrayList<String>)ht.get(result[i]);//if the key has already been assigned, thats ok
						temp.add(line);                                               //just add the argument to the ArrayList!
					}
				}
			}
		}
		catch(Exception e){
			System.out.println(e);
			System.exit(1);
		}
		System.out.println(ht);
		do{
			System.out.println("Enter a key to search for the value it is associated with.\n");
			System.out.println(ht.get(kb.nextLine()));
			System.out.println("\nKeep searching? Enter any key to continue, or type <NO> to end the process");
		}while(!kb.nextLine().equalsIgnoreCase("<NO>"));
		try{
			br.close();
		}
		catch(Exception e){
			System.out.println(e);
			System.exit(1);
		}
	}//end main
}//end class

Dani AI

Generated

If your index maps tokenized words to a list of matching documents (e.g., Map<String, List<Integer>>), a "valid extension" should be any format you can reliably parse as text. Plain-text like .txt/.csv/.log is safe. For HTML, strip tags before indexing (e.g., with jsoup). Binary formats (.pdf, .docx) require content extraction; consider Apache Tika to auto-detect type and extract text. Read files with NIO for robustness; see Files.walk and tokenize with Pattern.

A minimal inverted index in Java looks like this. It normalizes, tokenizes, and deduplicates doc IDs per term:

Map<String, List<Integer>> index = new HashMap<>();
Pattern WORD = Pattern.compile("[a-z0-9]+");

void indexDoc(int docId, String text) {
  WORD.matcher(text.toLowerCase())
      .results()
      .map(java.util.regex.MatchResult::group)
      .forEach(token -> {
        List<Integer> postings = index.computeIfAbsent(token, k -> new ArrayList<>());
        if (postings.isEmpty() || postings.get(postings.size() - 1) != docId) {
          postings.add(docId); // avoid duplicate docId for repeated terms
        }
      });
}

HTML alone cannot implement a search backend. You need server-side code (Java, PHP, etc.) to accept a query, look up tokens in the index, and return results. For production-grade ranking, phrase queries, and analyzers, use Apache Lucene instead of rolling your own; it handles tokenization, stop-words, stemming, postings, and scoring out of the box.

btwisted 0 Newbie Poster

What is considered a valid extension?
Thanks

shibin245 0 Newbie Poster

hai
i am having one website
in that , i stored i stored alot of addressess
how can i or my frends can take this address by a search engine

i am using html and java so please provide for html

ithelp 757 Posting Virtuoso Banned

You cannot code a search engine using html.

fayimora 0 Newbie Poster

use php.its fun

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.