abbas
05-08-2004, 08:22 AM
Hi all,
I'm developing a search engine function on my site. It searches a list of names. In fact famous Australian names. But the code I'm using is listing too many names and I want to reduce the list it brings up.
For instance I put the name Ancher in and the results page lists 5 names. The list it is picking from is over 200 but in the "An" section it looks like this,
Ancher, Sydney
Anderson, Dame Judith
Angliss, William
Annear, Harold Desbrowe
Ansett, Sir Reginald
Antill, John
I suspect its looking at the first two letters only but limiting its final list to 5 entries as it will not include the last name. The outcome might be better if the search looks at the first three letters. The code is as follows, so if anyone has some time can they just paste the section I need to change.
Thanks in advance
Abbas
var cookies = document.cookie;
var p = cookies.indexOf("d=");
if (p != -1) {
var st = p + 2;
var en = cookies.indexOf(";", st);
if (en == -1) {
en = cookies.length;
}
var d = cookies.substring(st, en);
d = unescape(d);
}
var od = d;
var m = 0;
if (d.charAt(0) == '"' && d.charAt(d.length - 1) == '"') {
m = 1;
}
var r = new Array();
var co = 0;
if (m == 0) {
var woin = new Array();
var w = d.split(" ");
for (var a = 0; a < w.length; a++) {
woin[a] = 0;
if (w[a].charAt(0) == '-') {
woin[a] = 1;
}
}
for (var a = 0; a < w.length; a++) {
w[a] = w[a].replace(/^\-|^\+/gi, "");
}
a = 0;
for (var c = 0; c < s.length; c++) {
pa = 0;
nh = 0;
for (var i = 0; i < woin.length; i++) {
if (woin[i] == 0) {
nh++;
var pat = new RegExp(w[i], "i");
var rn = s[c].search(pat);
if (rn >= 0) {
pa++;
} else {
pa = 0;
}
}
if (woin[i] == 1) {
var pat = new RegExp(w[i], "i");
var rn = s[c].search(pat);
if (rn >= 0) {
pa = 0;
}
}
}
if (pa == nh) {
r[a] = s[c];
a++;
}
}
co = a;
}
if (m == 1) {
d = d.replace(/"/gi, "");
var a = 0;
var pat = new RegExp(d, "i");
for (var c = 0; c < s.length; c++) {
var rn = s[c].search(pat);
if (rn >= 0) {
r[a] = s[c];
a++;
}
}
co = a;
}
function return_query() {
document.jse_Form.d.value = od;
}
function num_jse() {
document.write(co);
}
function out_jse() {
if (co == 0) {
document.write('Your search did not match any names.<p>Make sure all keywords are spelt correctly.<br>Try different or more general keywords. ');
return;
}
for (var a = 0; a < r.length; a++) {
var os = r[a].split("^");
if (bold == 1 && m == 1) {
var br = "<b>" + d + "</b>";
os[2] = os[2].replace(pat, br);
}
if (include_num == 1) {
document.write(a + 1, '. ', os[0], '</a><br>', os[2], '<p>');
} else {
document.write('<>', os[0], '</a><br>', os[2], '<p>');
}
}
}
I'm developing a search engine function on my site. It searches a list of names. In fact famous Australian names. But the code I'm using is listing too many names and I want to reduce the list it brings up.
For instance I put the name Ancher in and the results page lists 5 names. The list it is picking from is over 200 but in the "An" section it looks like this,
Ancher, Sydney
Anderson, Dame Judith
Angliss, William
Annear, Harold Desbrowe
Ansett, Sir Reginald
Antill, John
I suspect its looking at the first two letters only but limiting its final list to 5 entries as it will not include the last name. The outcome might be better if the search looks at the first three letters. The code is as follows, so if anyone has some time can they just paste the section I need to change.
Thanks in advance
Abbas
var cookies = document.cookie;
var p = cookies.indexOf("d=");
if (p != -1) {
var st = p + 2;
var en = cookies.indexOf(";", st);
if (en == -1) {
en = cookies.length;
}
var d = cookies.substring(st, en);
d = unescape(d);
}
var od = d;
var m = 0;
if (d.charAt(0) == '"' && d.charAt(d.length - 1) == '"') {
m = 1;
}
var r = new Array();
var co = 0;
if (m == 0) {
var woin = new Array();
var w = d.split(" ");
for (var a = 0; a < w.length; a++) {
woin[a] = 0;
if (w[a].charAt(0) == '-') {
woin[a] = 1;
}
}
for (var a = 0; a < w.length; a++) {
w[a] = w[a].replace(/^\-|^\+/gi, "");
}
a = 0;
for (var c = 0; c < s.length; c++) {
pa = 0;
nh = 0;
for (var i = 0; i < woin.length; i++) {
if (woin[i] == 0) {
nh++;
var pat = new RegExp(w[i], "i");
var rn = s[c].search(pat);
if (rn >= 0) {
pa++;
} else {
pa = 0;
}
}
if (woin[i] == 1) {
var pat = new RegExp(w[i], "i");
var rn = s[c].search(pat);
if (rn >= 0) {
pa = 0;
}
}
}
if (pa == nh) {
r[a] = s[c];
a++;
}
}
co = a;
}
if (m == 1) {
d = d.replace(/"/gi, "");
var a = 0;
var pat = new RegExp(d, "i");
for (var c = 0; c < s.length; c++) {
var rn = s[c].search(pat);
if (rn >= 0) {
r[a] = s[c];
a++;
}
}
co = a;
}
function return_query() {
document.jse_Form.d.value = od;
}
function num_jse() {
document.write(co);
}
function out_jse() {
if (co == 0) {
document.write('Your search did not match any names.<p>Make sure all keywords are spelt correctly.<br>Try different or more general keywords. ');
return;
}
for (var a = 0; a < r.length; a++) {
var os = r[a].split("^");
if (bold == 1 && m == 1) {
var br = "<b>" + d + "</b>";
os[2] = os[2].replace(pat, br);
}
if (include_num == 1) {
document.write(a + 1, '. ', os[0], '</a><br>', os[2], '<p>');
} else {
document.write('<>', os[0], '</a><br>', os[2], '<p>');
}
}
}