David Norris wrote:
>So, the problem is mostly with search.c. Basically, we need to
>temporarily disable the stemming if there is a wildcard query in the
>current word. This could also be affecting my Soundex stuff, since it
>works the same.
No, you want to stem the query since the index is stemmed. In my search
front-end I scan the query for wild cards. If I find them I stem them
before passing to Swish. This was my work-around for that problem. But it
doesn't solve the double-stemming problem that causes swish to fail to find
words.
>Well, I think that I understand why it doesn't work. But, I'm not
>clear how best to fix it. (short of rewriting large portions of code)
>Basically, Line 770 [Stem()] needs to occur within expandstar() referenced on
>line 231. Or, more correctly, we need some form of modular word
>filtering mechanism. Stem() and expandstar() should be called from a
>wordfilter() function of some sort.
expandstar() seems like a good place to move the call to Stem(), as it
seems to be after any stop words are removed, and all the words are
processed one-by-one. (again from my poor reading of the code.)
Anyone have a good perl-to-C converter?
@query_words =
map { m/(.+)(\*?)$/; $2 ? Stem($1).$2 : Stem($1) } @query_words;
Thanks,
Bill Moseley
mailto:moseley@hank.org
Received on Fri Oct 8 07:00:14 1999