Unfortunatley, since I have a full time job, I can only work on the occasional day off on ICE (and on giving support). Rest assured though that I have not abandoned development, and that a new version (which is most of all going to be easier to set up) will be released as soon as possible.
Update: I had to drop support, and currently cannot reply to email messages.
Depending on how you downloaded the script "ice-form.pl", it may be that an unprintable character is after the single line consisting of the word "END" only (this may be due to carriage return / linefeed conversion between different operating systems).
Solution: use an editor and make sure the line consists of the word "END" only. Also, when using ftp to upload a scipt to your Web server, make sure to upload the script in "text" mode, not in "binary" mode.
find.pl is part of your Perl distribution. I cannot include it, because implementations of find.pl are incompatible across platforms, and the UNIX version of find will not work e.g. under MacOS.
Depending on the way Perl is installed on your machine, you may have to specify the complete path in the require statement. If necessary, please replace
require("find.pl");
with
require("/path/to/perl/libs/find.pl");
Be aware of the fact that the path can have path seperators other then "/". Under MacOS, it is a colon ":", under Windows you must use a backslash. Either escape the backslash "\\path\\foo", or use single quotes '\path\foo'.
@SEARCHDIRS=("\\NS_SERVER\\ns-home\\HomeDir");
It can be that the "find.pl" that is installed on your server does not handle mixed case or lowercase paths. Test this by running a simple script
require "find.pl";
&find('\');
sub wanted {
print $name;
}
and see if it runs ok. It should print a list of all files on your machine. If find doesn't work correctly, you must install a Perl version that supports windows NT.
That probably means that your setup is not correct. This happens often when setting up ICE on a Windowes NT server.
Part of the problem stems from the fact that windows NT versions of Perl differ very much, some produce
\foo\bar
in index.idx, some produce
/foo/bar.(by the way, IMHO (and I mean humble), NT is not the ideal platform for running Web servers. You may want to consider alternative operating systems for PC hardware such as Linux and NEXTSTEP)
To make things worse, a backslash must be escaped in the Perl language by preceeding it with a second backslash, but only when it occurs inside a string quoted with "(some string)", not with '(some string)'.
(I never understood why anybody would want to use a backslash as a seperator.. don't operating systems designer write programs now and then?)
Here's what do to:
ice.idx
file in an editor and look at the way file names are stored. They have either '\' or '/' as a seperator between directories.
ice-form.pl, use the exact same seperator string when setting up
%aliases.
$indexfile
or
$thesfile, add the drive letter if the file resides on a different disk then the webservers default. Example:
$indexfile='c:\usr\web\index.idx'
Well, you can always set a variable
@EXCLUDEDIRS=("/users/neuss/WWW/ice/","/foo/bar");
and modify ice-idx.pl as follows:
local($exlude);
foreach $dir (@EXCLUDEDIRS){
if($name =~ /^$dir/){
print STDERR " -> excluded\n";
$exclude="y";
}
}
&indexfile($name) unless $exclude;
Make sure you get the paths right. It helps a lot to uncomment the diagnostic output to STDERR.
See also the next question.
There is. The Perl routine 'find.pl' provides the current path in the variable $dir, and allows you to set a variable $prune whenever you want to prune a recursive search.
Hence, you can modify the routine 'wanted' to set $prune. Here's an example that prunes all folders named "_hidden", assuming that "/" is the path seperator character.
sub wanted {
if($dir =~ m:/_hidden:){
$prune = 1;
return;
}
if($name=~/$SUFFIXES/i){ # file name ends
push(@allfiles,$name);
}
}
This has been fixed in version 1.3. Please retrieve an up to date version of ice-idx.pl from this Web site.
Sure. Here's an example:
%aliases = ( '/', '/var/httpd/htdocs', '/~user1', '/some/where/homes/user1', '/~user2', '/some/where/homes/user2', ... );
Edit ice2-idx.pl and change the tr statement
# the following line defines..
tr/a-zA-Z\xc0-\xff/ /cs;
to match the following
tr/a-zA-Z\xc0-\xff0-9/ /cs;
You can also index words with slashes by writing:
tr/a-zA-Z\xc0-\xff0-9\-/ /cs;
Be warned that this will somewhat increase the index file size.
The thesaurus functionality was broken during the introduction of full boolean expressions (version 1.5b2, May 1998). Since there is no easy fix for this, you'll have to either go back to a previous version, or wait for a re-implemented thesaurus in the final version of ICE 1.5.
Yes, I can create a customized version of ICE for you, but you will have to discuss the details with my employer. Our daily rates for an experienced system administrator and senior programmer are around 900 USD, depending on exchange rates.
If all you need is professional help setting up an ICE implementation, you can also contact Donna Jaggard (see the "support" page). This is often the quickest way to get your search engine up and running on your website.
See above. Sorry, I cannot give free support for Microsoft products - I would have way too much to do.
This is a server misconfiguration (typical for Windows NT). The Web server must be configured to execute cgi scripts instead of just serving their contents. Please consult the Server documentation.
Do NOT run the indexing tool as a CGI script. Run it from a shell, or via a cron-like mechanism instead. Running a CPU and memory intensive program such as a web indexer from a CGI script will have a very negative impact on server performance, and is a good way to get your ISP upset. If you have to use a web hosting service, create the indexes offline by running them on your local computer.
If you are absolutely certain you need to run it as a CGI script and you know what you are doing, just make sure the program is CGI compliant by adding the appropriate headers. I am discouraging running indexes on an ISP site, so the feature is not there by default.
Right here - just use the source, Luke..
Update: I had to drop support, and currently cannot reply to email messages.
If you prefer a nice graphical user interface, I strongly recommend Apple's MacOS X Server and the upcoming MacOS X.