Gossamer Forum
Home : Products : Gossamer Links : Development, Plugins and Globals :

Suggest query (as in Google Suggest)

Quote Reply
Suggest query (as in Google Suggest)
Google has a put up a new toy called "Google Suggest", which you can try out at:
http://www.google.com/...complete=1&hl=en

I just created a small mockup of the same feature for Links SQL (in conjunction with the SearchLogger plugin):
http://www.iyengar-yoga.com/livesearch.html

The CSS and the Javascript is still far from perfect, but you'll get the general idea.

If people are interested, i could make a plugin out of this....

Ivan
-----
Iyengar Yoga Resources / GT Plugins
Quote Reply
Re: [yogi] Suggest query (as in Google Suggest) In reply to
Cool!!

I might have an interest in this.

mgeyman
Quote Reply
Re: [yogi] Suggest query (as in Google Suggest) In reply to
Cool

I'd be interested in the plugin!

John
Quote Reply
Re: [gotze] Suggest query (as in Google Suggest) In reply to
That is great
Quote Reply
Re: [gotze] Suggest query (as in Google Suggest) In reply to
I decided not to write a plugin, but simply post all the relevant files here. It works, but the CSS is not perfect yet. If there are any CSS gurus out there, how can make it more Google like, I'd be happy to know!

The LiveSearch feature makes use of the SearchLogger plugin to generate the list, so you need to have this plugin installed, and it should contain a reasonable number of entries for the LiveSearch feature to make sense.

xhtml code
http://www.iyengar-yoga.com/livesearch.html

JavaScript code
http://www.iyengar-yoga.com/inc/livesearch.js

CSS stylesheet
http://www.iyengar-yoga.com/inc/livesearch.css

Perl Code
Code:
#!/usr/bin/perl

# +----------------------------------------------------------------------+
# | Copyright (c) 2004 Iyengar Yoga Resources |
# +----------------------------------------------------------------------+
# | Licensed under the Apache License, Version 2.0 (the "License"); |
# | you may not use this file except in compliance with the License. |
# | You may obtain a copy of the License at |
# | http://www.apache.org/licenses/LICENSE-2.0 |
# | Unless required by applicable law or agreed to in writing, software |
# | distributed under the License is distributed on an "AS IS" BASIS, |
# | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
# | implied. See the License for the specific language governing |
# | permissions and limitations under the License. |
# +----------------------------------------------------------------------+
# | Author: yogi <info@iyengar-yoga.com> |
# +----------------------------------------------------------------------+

use strict;
use lib '/path/to/links/admin';
use Links qw/$CFG $DB $IN/;

local $SIG{__DIE__} = \&Links::fatal;

Links::init('/path/to/links/admin');

main();

sub main {
my $t = $DB->table('SearchLog');
$t->select_options('ORDER by HitCount DESC', 'LIMIT 10');
my $q = $IN->param('query');
my $cond = GT::SQL::Condition->new( 'Term', 'LIKE', "$q%");
my $sth = $t->select($cond);
my $base = 'http://www.iyengar-yoga.com/perl/directory/search.cgi?query';
print "Content-Type: text/xml\n\n";
if ($t->hits) {
print qq|<ul class="LSRes">|;
while (my $result = $sth->fetchrow_hashref) {
print qq|<li class="LSRow" onmouseover="liveSearchHover(this)" onclick="liveSearchClicked(this)"><a href="$base=$result->{Term}" name="$result->{Term}">$result->{Term}</a> <span style="color:green;overflow:hidden;">$result->{Results} results</span></li>\n|;
}
print qq|</ul>|;
}
}

Background infos on the method used, plus maybe some tips for installation:
http://blog4.bitflux.ch/wiki/LiveSearch

Enjoy!

Ivan
-----
Iyengar Yoga Resources / GT Plugins

Last edited by:

yogi: Mar 9, 2005, 3:45 AM
Quote Reply
Re: [yogi] Suggest query (as in Google Suggest) In reply to
yogi,

I must have missed something. Where does the perl code (you posted above) reside? Is that part of another file?

Thanks a lot.

mgeyman
Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
The perl script is called from within the JavaScript code. You need to change the javascript according to your needs.

Ivan
-----
Iyengar Yoga Resources / GT Plugins
Quote Reply
Re: [yogi] Suggest query (as in Google Suggest) In reply to
Sorry, yogi, please bear with me, I'm not quite as technical - where or on which line in the livesearch.js file do you point to the file containing the perl script?


Thanks a lot.

mgeyman
Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
In the js file, look for the line containing
Code:
http://www.iyengar-yoga.com/perl/directory/livesearch.cgi
and replace this with the path to your livesearch.cgi file (i.e. the one posted above, which you saved somewhere on your server).

I hope this helps.

Ivan
-----
Iyengar Yoga Resources / GT Plugins
Quote Reply
Re: [yogi] Suggest query (as in Google Suggest) In reply to
Well, I must be getting closer to getting this to work as I'm now getting this Internal Server Error message in the gray box to the right of the form box on livesearch.html.

mgeyman
Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
Hi,
You may be getting the errors (other than the modifications needed for the path to your admin directory) from incorrect permissions on the script that should be set to 755 ?

John
Significant Media
Quote Reply
Re: [Jag] Suggest query (as in Google Suggest) In reply to
Hmmm. I'm still having the same problem after chmodding the file to 755.


mgeyman
Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
Hi,
Have you got access to your error_log to see if you have any more details than usual unhelpful internal error message ? In this case the debug option in the admin panel doesn't usually kick in for me so I have to go into my logs folder and figure out which line explains (if any Unsure) what is actually going on.
Sorry can't be of any more help I haven't installed Yogi's new work (thanks for your work BTW Yogi !) so I'm not sure whether it's a general bug or something on your server.

John
Significant Media
Quote Reply
Re: [yogi] Suggest query (as in Google Suggest) In reply to
Hi Yogi,

Thank you very much for the plugin. It works great. One small problem: after the suggestion box appears and click somewhere on the page, the box should disappear automatically as implemented by Google, but it won't disappear on my installation. If you could fix it, that would be great.

Another problem is it seems not work in Opera. In Netscape, the suggestion doesn't popup as a floating box, but appear within the page.

Thanks again.

Long

Last edited by:

long327: Dec 14, 2004, 12:59 AM
Quote Reply
Re: [long327] Suggest query (as in Google Suggest) In reply to
In Reply To:
Thank you very much for the plugin. It works great.[/quote]You're welcome.

As for your problems, I think you can find the solution on http://blog4.bitflux.ch/wiki/LiveSearch. On the same page you will find a list of supported browsers.

Ivan
-----
Iyengar Yoga Resources / GT Plugins
Quote Reply
Re: [yogi] Suggest query (as in Google Suggest) In reply to
Thanks Yogi. I can confirm that it works.
(and also that it works in firefox)
John
Quote Reply
Re: [gotze] Suggest query (as in Google Suggest) In reply to
Taking a look at it, it's officially cool! Smile

</not a clue>
Quote Reply
Re: [Dinky] Suggest query (as in Google Suggest) In reply to

As a part of the search results, I want to give also suggestions for word combinations and phrases (such as in Yahoo's: "try also:ů").
The same way this script anticipates or completes the search word or phrase while the visitor is typing it, can you give the same list of suggestions in the search results?

Quote Reply
Re: [Jag] Suggest query (as in Google Suggest) In reply to
My host provider emailed me back with this information of why I keep getting an Ineternal Server Error when I type characters into the Search box:

Oh I see. That doesn't happen with Firefox. Here are the errors from the logs
[Fri Dec 17 17:50:11 2004] [error] [client 202.58.246.163] Premature end of script headers: livesearch.cgi, referer:
http://www.ohiobiz.com/livesearch.html
[Fri Dec 17 17:50:11 2004] [error] [client 202.58.246.163] Can't open perl script "!": No such file or directory, referer:
http://www.ohiobiz.com/livesearch.html
So basically, it's trying to open livesearch.html as a perl script. But it's not perl, it's html.

I would I fix this?

Thanks.

mgeyman

Quote Reply
Re: Suggest query (as in Google Suggest) In reply to
Hi,

before I start looking at installing this plugin (which I think is superb by the way) I've got a question.

in my browser if I have a search box it attempts to auto complete forms by an option I have selected in my browser.

How will this pluging manage that, does it over ride the settings for auto complete.

I am not too hot with code but I hope I will be able to manage this, can I make the suggested results drop down rather than appear at the side, my search bar is on the right .. or does it auto fit the suggestions anyway i.e they will appear on the left if there isn't room on the right.

Last question, it uses search logger. Is it possible to remove search terms that returned 0 results, this option is not available in search logger as it is used for a different purpose, all I can do is purge results but I don't want to purge or it loses functionality but also I don't want 0 searches returned.

Thanks in advance,

Kev

Cheers
KevM
Quote Reply
Re: [yogi] Suggest query (as in Google Suggest) In reply to
Does anyone have this working beside Yogi..

I followed the steps above but it will not work..

http://www.2muslims.com/...earch/new_page_3.htm
Regards
KaTaBd

Users plug In - Multi Search And Remote Search plug in - WebRing plug in - Muslims Directory
Quote Reply
Re: [katabd] Suggest query (as in Google Suggest) In reply to
I still can't get it to work properly either.

mgeyman
Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
It works Smile

For 3.xx, you need to change the call to the database table from SearchLog to SearchLogs.
Quote Reply
Re: [gotze] Suggest query (as in Google Suggest) In reply to
For the life of me I can't get this to work!!!

Could I send you a copy of my files to have you take a quick look?

I keep getting an Internal Error 500 Message on my page when I start to type in a term (http://dir.ohiobiz.com/livesearch.html).

Thanks.

Mark
Quote Reply
Re: [gotze] Suggest query (as in Google Suggest) In reply to
So

I have both:

livesearch.js
livesearch.css

Have the livesearch.cgi as described above...
Changed livesearch.js to reflect our URL in it..

Still nothing comes up..

Any ideas cus this is all what the instructions says..
Regards
KaTaBd

Users plug In - Multi Search And Remote Search plug in - WebRing plug in - Muslims Directory
Quote Reply
Re: [katabd] Suggest query (as in Google Suggest) In reply to
The solution is very easy..

In the livesearch.html page

In the Body tags area..

Change this:

<script language="JavaScript" src="livesearch.js" type="text/javascript"></script>

To:

<script language="JavaScript" src="URL/livesearch.js" type="text/javascript"></script>

See it in action..
http://2muslims.com/livesearch.shtml
Regards
KaTaBd

Users plug In - Multi Search And Remote Search plug in - WebRing plug in - Muslims Directory
Quote Reply
Re: [katabd] Suggest query (as in Google Suggest) In reply to
Another cool thing we did..I think Crazy
We removed the <body> loading command and that will dispaly the suggestions as part of the page..
Regards
KaTaBd

Users plug In - Multi Search And Remote Search plug in - WebRing plug in - Muslims Directory
Quote Reply
Re: [katabd] Suggest query (as in Google Suggest) In reply to
What differnec does it make:

http://2muslims.com/livesearch.shtml works great

http://www.2muslims.com/livesearch.shtml does not..

The rest of the site works fine...any ideas?
Regards
KaTaBd

Users plug In - Multi Search And Remote Search plug in - WebRing plug in - Muslims Directory
Quote Reply
Re: [katabd] Suggest query (as in Google Suggest) In reply to
It has to be something in the js file..

In this section (Now):

liveSearchReq.onreadystatechange= liveSearchProcessReqChange;
liveSearchReq.open("GET", "http://2muslims.com/...livesearch.cgi?query=" + document.forms.searchform.query.value + liveSearchParams);
liveSearchLast = document.forms.searchform.query.value;
liveSearchReq.send(null);
}

If I change it to:
liveSearchReq.onreadystatechange= liveSearchProcessReqChange;
liveSearchReq.open("GET", "http://www.2muslims.com/...livesearch.cgi?query=" + document.forms.searchform.query.value + liveSearchParams);
liveSearchLast = document.forms.searchform.query.value;
liveSearchReq.send(null);
}

http://www.2muslims.com/livesearch.shtml works great

http://2muslims.com/livesearch.shtml does not..

Does anyone know how to fix it?
Regards
KaTaBd

Users plug In - Multi Search And Remote Search plug in - WebRing plug in - Muslims Directory
Quote Reply
Re: [katabd] Suggest query (as in Google Suggest) In reply to
I got it working here

http://www.mychristianweb.com/...live/livesearch.html

In addition to the change yogi mentioned above I had to make these other changes;
Changed the path to my link admin dir as well as the path URL to the LSQL search in the cgi file.

In the html the relative path to search.cgi was changed and links to the javascript and the css files were changed to match location on my site.

CCUnet
my Christian web
Quote Reply
Re: [ccunet] Suggest query (as in Google Suggest) In reply to
It works on my ite too.

BUT that www bug irritates me.
Regards
KaTaBd

Users plug In - Multi Search And Remote Search plug in - WebRing plug in - Muslims Directory
Quote Reply
Re: [katabd] Suggest query (as in Google Suggest) In reply to
 I've been trying for quite some time but I still can't get it to work after following what everyone else has been doing?

Here's my livesearch.html file:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/...ml1-transitional.dtd">
<html>
<head>
<title>OhioBiz LiveSearch</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link href="livesearch.css" rel="stylesheet" media="screen" type="text/css" />
<script language="JavaScript" src="livesearch.js" type="text/javascript"></script>
</head>
<body onload="liveSearchInit()">
<h1>OhioBiz LiveSearch</h1>
<p>
Type the first few letters of your search query and see what happens...
</p>
<form name="searchform" method="get" action="/cgi-bin/search.cgi" onsubmit="return liveSearchSubmit()" >
<input type="text" id="livesearch" name="query" onkeypress="liveSearchStart()" size="25" />
<div id="LSResult" style="display: none;"><div id="LSShadow"></div></div>
</form>
<p>
The <a href="http://blog4.bitflux.ch/wiki/LiveSearch">LiveSearch</a> feature was
originally written by <a href="http://www.bitflux.ch/">bitflux</a> and adapted
to Links SQL by Ivan Herger.
</p>

</body>
</html>


Here's my livesearch.cgi file:

#!/usr/bin/perl

# +----------------------------------------------------------------------+
# | Copyright (c) 2004 Iyengar Yoga Resources |
# +----------------------------------------------------------------------+
# | Licensed under the Apache License, Version 2.0 (the "License"); |
# | you may not use this file except in compliance with the License. |
# | You may obtain a copy of the License at |
# | http://www.apache.org/licenses/LICENSE-2.0 |
# | Unless required by applicable law or agreed to in writing, software |
# | distributed under the License is distributed on an "AS IS" BASIS, |
# | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
# | implied. See the License for the specific language governing |
# | permissions and limitations under the License. |
# +----------------------------------------------------------------------+
# | Author: yogi <info@iyengar-yoga.com> |
# +----------------------------------------------------------------------+
use strict;
use lib '/home/ohiobiz/public_html/dir/cgi-bin/admin';
use Links qw/$CFG $DB $IN/;
local $SIG{__DIE__} = \&Links::fatal;
Links::init('/home/ohiobiz/public_html/dir/cgi-bin/admin');

main();
sub main {
my $t = $DB->table('links2SearchLogs');
$t->select_options('ORDER by HitCount DESC', 'LIMIT 10');
my $q = $IN->param('query');
my $cond = GT::SQL::Condition->new( 'Term', 'LIKE', "$q%");
my $sth = $t->select($cond);
my $base ='http://dir.ohiobiz.com/cgi-bin/search.cgi?query';
print "Content-Type: text/xml\n\n";
if ($t->hits) {
print qq|<ul class="LSRes">|;
while (my $result = $sth->fetchrow_hashref) {
print qq|<li class="LSRow" onmouseover="liveSearchHover(this)" onclick="liveSearchClicked(this)"><a href="$base=$result->{Term}" name="$result->{Term}">$result->{Term}</a> <span style="color:green;overflow:hidden;">$result->{Results} results</span></li>\n|;
}
print qq|</ul>|;
}
}


Here's my livesearch.js file:

/*
// +----------------------------------------------------------------------+
// | Copyright (c) 2004 Bitflux GmbH |
// +----------------------------------------------------------------------+
// | Licensed under the Apache License, Version 2.0 (the "License"); |
// | you may not use this file except in compliance with the License. |
// | You may obtain a copy of the License at |
// | http://www.apache.org/licenses/LICENSE-2.0 |
// | Unless required by applicable law or agreed to in writing, software |
// | distributed under the License is distributed on an "AS IS" BASIS, |
// | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
// | implied. See the License for the specific language governing |
// | permissions and limitations under the License. |
// +----------------------------------------------------------------------+
// | Author: Bitflux GmbH <devel@bitflux.ch> |
// | Modified for use with Links SQL: Ivan Herger <info@iyengar-yoga.com> |
// +----------------------------------------------------------------------+
*/
var liveSearchReq = false;
var t = null;
var liveSearchLast = "";

var isIE = false;
// on !IE we only have to initialize it once
if (window.XMLHttpRequest) {
liveSearchReq = new XMLHttpRequest();
}
function liveSearchInit() {

if (navigator.userAgent.indexOf("Safari") > 0) {
document.getElementById('livesearch').addEventListener("keydown",liveSearchKeyPress,false);
// document.getElementById('livesearch').addEventListener("blur",liveSearchHide,false);
} else if (navigator.product == "Gecko") {

document.getElementById('livesearch').addEventListener("keypress",liveSearchKeyPress,false);
document.getElementById('livesearch').addEventListener("blur",liveSearchHideDelayed,false);

} else {
document.getElementById('livesearch').attachEvent('onkeydown',liveSearchKeyPress);
// document.getElementById('livesearch').attachEvent("onblur",liveSearchHide,false);
isIE = true;
}

document.getElementById('livesearch').setAttribute("autocomplete","off");
}
function liveSearchHideDelayed() {
window.setTimeout("liveSearchHide()",400);
}

function liveSearchHide() {
document.getElementById("LSResult").style.display = "none";
var highlight = document.getElementById("LSHighlight");
if (highlight) {
highlight.removeAttribute("id");
}
}
function liveSearchKeyPress(event) {

if (event.keyCode == 40 )
//KEY DOWN
{
highlight = document.getElementById("LSHighlight");
if (!highlight) {
highlight = document.getElementById("LSShadow").firstChild.firstChild;
} else {
highlight.removeAttribute("id");
highlight = highlight.nextSibling;
}
if (highlight) {
highlight.setAttribute("id","LSHighlight");
var queryName = highlight.firstChild.getAttribute("name")
liveSearchLast = queryName;
document.forms.searchform.query.value = queryName;
}
if (!isIE) { event.preventDefault(); }
}
//KEY UP
else if (event.keyCode == 38 ) {
highlight = document.getElementById("LSHighlight");
if (!highlight) {
highlight = document.getElementById("LSResult").firstChild.firstChild.lastChild;
}
else {
highlight.removeAttribute("id");
highlight = highlight.previousSibling;
}
if (highlight) {
highlight.setAttribute("id","LSHighlight");
var queryName = highlight.firstChild.getAttribute("name")
liveSearchLast = queryName;
document.forms.searchform.query.value = queryName;
}
if (!isIE) { event.preventDefault(); }
}
//ESC
else if (event.keyCode == 27) {
highlight = document.getElementById("LSHighlight");
if (highlight) {
highlight.removeAttribute("id");
}
document.getElementById("LSResult").style.display = "none";
}
}
function liveSearchStart() {
if (t) {
window.clearTimeout(t);
}
t = window.setTimeout("liveSearchDoSearch()",200);
}
function liveSearchDoSearch() {
if (typeof liveSearchRoot == "undefined") {
liveSearchRoot = "";
}
if (typeof liveSearchRootSubDir == "undefined") {
liveSearchRootSubDir = "";
}
if (typeof liveSearchParams == "undefined") {
liveSearchParams = "";
}
if (liveSearchLast != document.forms.searchform.query.value) {
if (liveSearchReq && liveSearchReq.readyState < 4) {
liveSearchReq.abort();
}
if ( document.forms.searchform.query.value == "") {
liveSearchHide();
return false;
}
if (window.XMLHttpRequest) {
// branch for IE/Windows ActiveX version
} else if (window.ActiveXObject) {
liveSearchReq = new ActiveXObject("Microsoft.XMLHTTP");
}
liveSearchReq.onreadystatechange= liveSearchProcessReqChange;
liveSearchReq.open("GET", "http://dir.ohiobiz.com/...livesearch.cgi?query=" + document.forms.searchform.query.value + liveSearchParams);
liveSearchLast = document.forms.searchform.query.value;
liveSearchReq.send(null);
}
}
function liveSearchProcessReqChange() {

if (liveSearchReq.readyState == 4) {
var res = document.getElementById("LSResult");
res.style.display = "block";
var sh = document.getElementById("LSShadow");

sh.innerHTML = liveSearchReq.responseText;

}
}
function liveSearchSubmit() {
var highlight = document.getElementById("LSHighlight");
if (highlight && highlight.firstChild) {
window.location = liveSearchRoot + liveSearchRootSubDir + highlight.firstChild.getAttribute("href");
return false;
}
else {
return true;
}
}

function liveSearchHover(el) {
highlight = document.getElementById("LSHighlight");
if (highlight) {
highlight.removeAttribute("id");
}
el.setAttribute("id","LSHighlight");
document.searchform.query.focus();
}
function liveSearchClicked(el) {
highlight = document.getElementById("LSHighlight");
if (highlight) {
highlight.removeAttribute("id");
}
el.setAttribute("id","LSHighlight");
return liveSearchSubmit();
}



So, I not sure why nothing showing up in the search box. Any ideas? permission issues?

Thanks for anyone's advice.

mgeyman
Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
Change this line:

<script language="JavaScript" src="livesearch.js" type="text/javascript"></script>

to the full URL of the js file:
<script language="JavaScript" src="yourdomain.com/livesearch.js" type="text/javascript"></script>
Regards
KaTaBd

Users plug In - Multi Search And Remote Search plug in - WebRing plug in - Muslims Directory
Quote Reply
Re: [katabd] Suggest query (as in Google Suggest) In reply to
katabd,

I made the update in livesearch.html and now get an Unknown runtime error message after I start typing characters into the search box - see http://dir.ohiobiz.com/livesearch.html.

mgeyman
Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
Hi,

A few observances.

I copied the files from the original post, and got them to run, no real problems.

1) make sure you upload livesearch.cgi in ASCII, *and* you give it 755 execute permissions in Unix.

2) make sure all the &amp; tag (in front of the $SIG{__DIE__} = \&Links::fatal line) is just an "&" and that all the &lt; and &gt; tags are converted back to their ansi <> forms.

3) make sure you change the paths to your livesearch.cgi and search.cgi in the livesearch.js and livesearch.htm files There are 3 paths (two init paths lib & Links::init) and then the $base lower down. There is one path in the livesearch.js file.

4) if you have your extensions set to .html you need to change the livesearch.htm to livesearch.html before uploading it to the templates directory.

I did that, and called ../page.cgi?livesearch;d=1 and it worked just fine :) in GLinks3

Also, if you are using the *new* version of the search logger, built in to Links, you must rename the "SearchLog" file, to "SearchLogs" in the .js file.

If you are still using the original, or my avanced/improved logger, you can leave it as SearchLog


PUGDOG´┐Ż Enterprises, Inc.

The best way to contact me is to NOT use Email.
Please leave a PM here.

Last edited by:

pugdog: Apr 27, 2005, 2:27 PM
Quote Reply
Re: [pugdog] Suggest query (as in Google Suggest) In reply to
pugdog,

Thanks for the info. I did what you just said. What I'm getting now when I attempt to type a phrase in the search box is a javascript error:

Line: 121
Char: 2
Error: 'document.forms.searchform.q.value' is null or not an object
Code: 0
URL: http://www.ohiobiz.com/livesearch.html

Seems like the problem is in the livesearch.js file???
Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
I edited the post above, there are 3 paths, in the .cgi and 1 in the .js file.

Are you sure you have the right .js file? That line doesn't match up in my file.

I've attached the modified one here. Just change the path with "beadblogger" to your path and see if it works.

BTW: make sure you upload this file as _ASCII_ or text, not binary.


PUGDOG´┐Ż Enterprises, Inc.

The best way to contact me is to NOT use Email.
Please leave a PM here.

Last edited by:

pugdog: Apr 27, 2005, 2:32 PM
Quote Reply
Re: [pugdog] Suggest query (as in Google Suggest) In reply to
Hey pugdog! Thanks so much for your help, I finally got it working - http://www.ohiobiz.com/livesearch.html

Just one final question, when you type in letters in the search box where there are no search results in the db, why is there a dark gray horizontal bar left on the screen (to the right of the search box)? Is there a way to make that disappear without having to either refresh the page or type in new letters?

Again, thanks for your and everyone else's help!

mgeyman
Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
pugdog,

One other thing I noticed - I am using both the new built-in SearchLogger glinks (3.0.1) and the old one - using it for Top 100 Searches.

The Sugggest query work fine when pulling results from "SearchLog" but doesn't work when trying to pull results from "SearchLogs" (built in SearchLogger). Do I need to uninstall the old plug-in for the Suggest query to be able to pull results from the new built-in one?

mgeyman
Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
No,

They can be run side by side with only a few cpu cycles penalty for the xtra code. They don't interfere with each other at all, now, the GL3 uses a new table SearchLogs.

To pull queries from the new built in one, change the table name in the livesearch.cgi from SearchLog to SearchLogs




PUGDOG´┐Ż Enterprises, Inc.

The best way to contact me is to NOT use Email.
Please leave a PM here.
Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
Quote:
Just one final question, when you type in letters in the search box where there are no search results in the db, why is there a dark gray horizontal bar left on the screen (to the right of the search box)? Is there a way to make that disappear without having to either refresh the page or type in new letters?


Haven't figured that out, but it also doesn't go away, as pointed out before.

I'm not real good with javascript, but I can figure out enough to make it work. It probably needs a test to only initially display the box when a result is returned.

Someone who knows javascript will have to answer this one :)


PUGDOG´┐Ż Enterprises, Inc.

The best way to contact me is to NOT use Email.
Please leave a PM here.
Quote Reply
Re: [pugdog] Suggest query (as in Google Suggest) In reply to
--To pull queries from the new built in one, change the table name in the livesearch.cgi from SearchLog to SearchLogs

pugdog,

I tried this but I didn't get any visible suggestion results with "SearchLogs" - Strange!

mgeyman
Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
You also have to change

my $cond = GT::SQL::Condition->new( 'Term', 'LIKE', "$q%");


to slog_query :( there were internal changes to the database structure.


PUGDOG´┐Ż Enterprises, Inc.

The best way to contact me is to NOT use Email.
Please leave a PM here.
Quote Reply
Re: [pugdog] Suggest query (as in Google Suggest) In reply to
Hmmm. I changed "Term" to "slog_query" and "SearchLog" to "SearchLogs" but I get this error when attempting to do a search:
    Content-type: text/html
    A fatal error has occured:
    Can't call method "fetchrow_hashref" on an undefined value at livesearch.cgi line 23.

    Please enable debugging in setup for more details.

Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
In Reply To:
Hmmm. I changed "Term" to "slog_query" and "SearchLog" to "SearchLogs" but I get this error when attempting to do a search:
    Content-type: text/html
    A fatal error has occured:
    Can't call method "fetchrow_hashref" on an undefined value at livesearch.cgi line 23.

    Please enable debugging in setup for more details.

I get this error too. I have been unable to make this work in 3.01. At best I get a solid gray box...apparently it can't access the search logs so it gets no results but is otherwise working.
Quote Reply
Re: [fantasyman] Suggest query (as in Google Suggest) In reply to
Have you enabled search logging at all? It's disabled in the default setup.
Quote Reply
Re: [fantasyman] Suggest query (as in Google Suggest) In reply to
Unfortunately, rather than handling a null/empty value in a select, the whole routine just dies. The way around it is to check for returned results first, but there are a few instances where even that doesn't work.

But make sure you have some search queries in the database, and that everything is entered correctly.

I'll try to modify my copy here, and see if it's some other issue blocking this.


PUGDOG´┐Ż Enterprises, Inc.

The best way to contact me is to NOT use Email.
Please leave a PM here.
Quote Reply
Re: [gotze] Suggest query (as in Google Suggest) In reply to
Yeah, its enabled and I can view the search logs just fine from the admin menu.
Quote Reply
Re: [fantasyman] Suggest query (as in Google Suggest) In reply to
Same here. I can see the search results from the built in searchlogger from the admin area.
Quote Reply
Re: [mgeyman] Suggest query (as in Google Suggest) In reply to
This is one of those silent 500 errors...

Code:

$t->select_options('ORDER by HitCount DESC', 'LIMIT 10');


The column "HitCount" doesn't exist. Needs to be slog_hits

I haven't run this, but just looking at the code, it's an error I've banged my head on before.


PUGDOG´┐Ż Enterprises, Inc.

The best way to contact me is to NOT use Email.
Please leave a PM here.
Quote Reply
Re: [pugdog] Suggest query (as in Google Suggest) In reply to
Here is my working code: (red marked is for 3.0x)

Code:
#!/usr/bin/perl

# +----------------------------------------------------------------------+
# | Copyright (c) 2004 Iyengar Yoga Resources |
# +----------------------------------------------------------------------+
# | Licensed under the Apache License, Version 2.0 (the "License"); |
# | you may not use this file except in compliance with the License. |
# | You may obtain a copy of the License at |
# | http://www.apache.org/licenses/LICENSE-2.0 |
# | Unless required by applicable law or agreed to in writing, software |
# | distributed under the License is distributed on an "AS IS" BASIS, |
# | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
# | implied. See the License for the specific language governing |
# | permissions and limitations under the License. |
# +----------------------------------------------------------------------+
# | Author: Ivan Herger <info@iyengar-yoga.com>
# | Adpted to GLinks 3.x by John Gotze <john@slashdemocracy.org |
# +----------------------------------------------------------------------+

use strict;
use lib '/home/cgi-bin/admin';
use Links qw/$CFG $DB $IN/;

local $SIG{__DIE__} = \&Links::fatal;

Links::init('/home/cgi-bin/admin');

main();

sub main {
my $t = $DB->table('SearchLogs');
$t->select_options('ORDER by slog_hits DESC', 'LIMIT 10');
my $q = $IN->param('query');
my $cond = GT::SQL::Condition->new( 'slog_query', 'LIKE', "$q%");

my $sth = $t->select($cond);
my $base = 'http://slashdemocracy.org/cgi-bin/search.cgi?query';
print "Content-Type: text/xml\n\n";
if ($t->hits) {
print qq|<ul class="LSRes">|;
while (my $result = $sth->fetchrow_hashref) {
print qq|<li onmouseover="liveSearchHover(this)" onclick="liveSearchClicked(this)"><a href="$base=$result->{slog_query}" name="$result->{slog_query}">$result->{slog_query}</a> <span style="color:green;overflow:hidden;">$result->{slog_hits} results</span></li>\n|;
}
print qq|</ul>|;
}
}

HTH
John
Quote Reply
Re: [gotze] Suggest query (as in Google Suggest) In reply to
slog_hits was the missing piece of the puzzle :) Thanks so much for the help.
Quote Reply
Re: [fantasyman] Suggest query (as in Google Suggest) In reply to
Everything works fine here, too. Thanks everyone!
Quote Reply
Re: [gotze] Suggest query (as in Google Suggest) In reply to
Hello

Which search logger plug in are you using


This does not work with GT plug in? is there another one?
Regards
KaTaBd

Users plug In - Multi Search And Remote Search plug in - WebRing plug in - Muslims Directory
Quote Reply
Re: [katabd] Suggest query (as in Google Suggest) In reply to
The search logger is built into recent versions of GLinks, and that's what I'm using.
Quote Reply
Re: [gotze] Suggest query (as in Google Suggest) In reply to
Thank you..
Regards
KaTaBd

Users plug In - Multi Search And Remote Search plug in - WebRing plug in - Muslims Directory
Quote Reply
Re: [gotze] Suggest query (as in Google Suggest) In reply to
Heya all,

Has anyone tried changing this so the "suggestions" are not built from your search logs, but from the titles of your links?

That is, as you type a word the dropdown shows you all links with the word/phrase in the title of the link.

Safe swoops
Sangiro
Quote Reply
Re: [sangiro] Suggest query (as in Google Suggest) In reply to
Yes, see http://slashdemocracy.org/links/

Just change the table you use.
Quote Reply
Re: [sangiro] Suggest query (as in Google Suggest) In reply to
I use the Table Links_Word_List for my search example
http://www.download-tipp.de/livesearch/

my $t = $DB->table('Links_Word_List');
......
snip
......
print qq|<li class="LSRow" onmouseover="liveSearchHover(this)" onclick="liveSearchClicked(this)"> <a href="$base=$result->{Word}" name="$result->{Word}">$result->{Word}</a></li>\n|;
.....

So you can use also the table Links with the field Title.
You should change it like the example above.
Links_Word_List should be Links
and Word should be Title

Best regards from
Bremen/Germany

Lothar
Quote Reply
Re: [eljot] Suggest query (as in Google Suggest) In reply to
Excellent. Thank you - I'll take a look at that. Smile

Safe swoops
Sangiro
Quote Reply
Re: [sangiro] Suggest query (as in Google Suggest) In reply to
Hmm, works nearly perfect, but I have problems with nonenglish charakters!
A search for "k├Â" just suggests "k?rper", but in my admin searchlogs nonenglish charakters are shown without any problem. So it should be no problem on this.
Do you have any suggestions how to solve this problem?
Thanks
Matthias

Matthias
gpaed.de
Quote Reply
Re: [gotze] Suggest query (as in Google Suggest) In reply to
So has anyone tried to make plugin from this? I see Google is using it now so it would be cool to have something like this as plugin.

Andy? Wink

Regards.

UnReal Network
Quote Reply
Re: [DeadMan] Suggest query (as in Google Suggest) In reply to
Anyone has working plugin/global for this 'Suggest Query' feature?

Vishal
-------------------------------------------------------
Quote Reply
Re: [SWDevil.Com] Suggest query (as in Google Suggest) In reply to
This one seems 2 work:

http://www.2muslims.com/...earch/new_page_3.htm

I had problems with the "access denied" part of the java on mine, so you can try this script if you use a direct url...

This site uses the same script to the extreme:

http://1976design.com/blog/

hope this helps,

- Jonathan

Last edited by:

jdgamble: Jun 6, 2009, 2:45 PM
Quote Reply
Re: [DeadMan] Suggest query (as in Google Suggest) In reply to
Mine is working fine, except for nonenglish characters...
http://www.gpaed.de/g-livesearch

Any help for nonenglish characters would be great...
Thanks

Matthias
gpaed.de
Quote Reply
Suggest query (as in Google Suggest) In reply to
Thanks for both the example, I will check it out and let you know how it works - this is a very good feature.

Vishal
-------------------------------------------------------
Quote Reply
Re: [SWDevil.Com] Suggest query (as in Google Suggest) In reply to
I saw that in firefox when you use the arrows to go over the suggestions, it doesn't go pass the first one.

In explorer, when you go with arrow keys from bottom to top the system shows in the search box the query that you stand on with the arrow. But when you go from top to bottom it doesn't do that.
is there a solution to make it work in both directions and also in firefox?
Quote Reply
Re: [Matthias70] Suggest query (as in Google Suggest) In reply to
Hi Matthias,

Your request is old. But, if you still seek a solution, you can test this in livesearch.cgi file :

print "Content-Type: text/xml; charset=\"ISO-8859-1\"\n\n";

Mick
Quote Reply
Re: [MJ_] Suggest query (as in Google Suggest) In reply to
Hi MJ,
thanks a lot for your help!
It works perfect Smile

Matthias
gpaed.de