Javascript Search Engine (Search own site)

45,975

Solution 1

Few suggestions:

  1. Unless you must, don't re-invent the wheel - there are open source libraries such as Tipue Search (Tipue Search) and others.
  2. You can use jquery/ajax $.load() to dynamically load page content and search them, while still staying in the same page as far as your DOM and script goes.
  3. NodeJS is also a good option, but will probably be an over kill.

Hope this helps!

Solution 2

You could use search-index. It can run on the server and in the browser. An example on how to run it in the browser and the actual demo of it. You would have to write a crawler/spider that goes through your site. Lunr.js would also work well, I think.

If you had your site as JSON, the indexing would be a small task to fix, or you could have a crawler running in the browser.

Disclaimer: I'm doing some work on search-index.

Solution 3

As you are on an intranet and presumably all you pages are on the same server then I would think it would be possible to make a XMLHttpRequest to each of your pages in turn, store the page in a variable and then do a search on the stored page.

Possibly someone with more experience of XMLHttpRequest would say how efficient or effective this would be.

Share:
45,975
Samp
Author by

Samp

Updated on April 22, 2020

Comments

  • Samp
    Samp about 4 years

    I want to have a search engine which searches only my own site. I have some JavaScript currently, but it only searches words on that specific page. I need it to search the links within my site if possible.

    I cannot use the Google search engine as my site is on an internal intranet.

    <SCRIPT language=JavaScript>
    var NS4 = (document.layers);    
    var IE4 = (document.all);
    var win = window;    
    var n   = 0;
    function findInPage(str) {
    var txt, i, found;
    if (str == "")
    return false;
    if (NS4) {
    if (!win.find(str))
      while(win.find(str, false, true))
        n++;
    else
      n++;
    if (n == 0)
      alert("Not found.");
    }
    if (IE4) {
    txt = win.document.body.createTextRange();
    for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
      txt.moveStart("character", 1);
      txt.moveEnd("textedit");
    }
    if (found) {
      txt.moveStart("character", -1);
      txt.findText(str);
      txt.select();
      txt.scrollIntoView();
      n++;
    }
    else {
      if (n > 0) {
        n = 0;
        findInPage(str);
      }
      else
        alert("Sorry, we couldn't find.Try again");
    }
    }
    return false;
    }
    </SCRIPT>
    

    (onsubmit="return findInPage(this.string.value); in the button tag.)

    It works great for searching that page, but I was hoping there was a way to search all pages on my site.

  • Jim W says reinstate Monica
    Jim W says reinstate Monica over 10 years
    Not a bad idea for a smallish site where you expect to do lots of search queries (ie it's worth downloading all the pages and storing an index). This is assuming there's a good reason not to just do it on the server...