Samp
Samp

Reputation: 385

Javascript Search Engine (Search own site)

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.

Upvotes: 11

Views: 49085

Answers (3)

Espen Klem
Espen Klem

Reputation: 331

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.

Upvotes: 4

dev7
dev7

Reputation: 6369

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!

Upvotes: 17

jing3142
jing3142

Reputation: 1871

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.

Upvotes: 1

Related Questions