Skip to main content.
home | support | download

Back to List Archive

New version of Phrase Search (g)

From: Jose Manuel Ruiz <jmruiz(at)>
Date: Wed Apr 19 2000 - 11:47:31 GMT
Hi all

04/19/2000 New version of swish-e for phrase search (see README-PHRASE)

Download it from

Fixed in swish-e-1.3.2-PHRASEg:
- Added more free() calls. Better use of memory
- Added external filter option from Rainer Scherg. This option caused 
me some problems with the recursive function printfile in solaris (not 
in linux). This was because of the use of "char filtercmd[MAXSTRLEN]" 
that was allocated each time in stack. To avoid this, I have rewritten
the code to implement an array aproach instead of a recursive binary
aproach. No more stack corruptions in this fucntion.
- Fixed a buffer overrun in array stopList. Look at the old addStopList 
function and stopList array in hash.c.
- Better compression schema for integers. This is specially important
because word postions are stored as integers. I think that old compress 
function was using a null extra byte. Now, compress is also a macro for 
better performance.
- Some modifications to docprop.c to make the file index portable.
Now, integers are stored using the compress function.
- Added sorting of results by property using -s option. You can 
show some properties in your results list and sort the results by 
another(s) properties, regardless if they are or not in your result
list. Example:

swish-e -w word -f index.file [-p prop1 ...] [-s propn ...]

The sort is based on qsort and strcasecmp (stricmp in Windows).
- Added the option of showing results begining at the nth position 
(option -b) based on the code from Scott Schultz. For Example

swish-e -b 20 -m 15 -w word -f index.file

This may show 15 results starting at the 20th element.
- Improved "or result" function (faster merges of long results). 
Specially useful when stars are used (Example: a* or b*)
- Phrase delimiter char changed to "

Remember that you need to reindex your data.

I think that this is a quite stable version but, since I have
rewritten an add many functions, let me know if you find any problem.

NOTE about gcc 2.8.1:
I have experimented some strange problems with gcc 2.8.1
and solaris when using fputc, fseek and fgetc. I have workarounded 
them using uneeded calls to ftell and fseek. Anyone heard about this?
Is a bug of gcc 2.8.1 for solaris or just a gcc 2.8.1 bug?
This is the workaround: 
>From fputc(fp,c);  ** Do not write anything but no error reported
To j=ftell(fp); fseek(fp,j,0);fputc(fp,c);  ** Writes c!!!
No problems with gcc in linux

Waiting to hear from you

Jose Manuel Ruiz Ramos
Received on Wed Apr 19 07:49:16 2000