[jsword-devel] Latest changes
DM Smith
dmsmith555 at yahoo.com
Fri Mar 25 04:45:32 MST 2005
I have just checked in the final changes for today's release of 0.9.9.
I have put in an experimental implementation in for "Match" using
Lucene's fuzzy search.
I did this by creating a LuceneThesarus which appends a ~ to each word
presented to it.
Since this is done after the parsing of the search query, it does not
interfere with ~3, the
"blur" proximity search.
In making this change, I found some problems, which I did not fix. The
basic problem is
that TallyPassage is used exclusively, regardless of the "advanced"
user's choice. This is
necessary for "Match" to work, but it is overkill otherwise. The reason
that the code has
this problem is that match is not a state of a search (as indicated by
the check box), but
it is a decoration of the user's search string. Once the decorated
search string is parsed,
the remaining code deals with parts of the search in isolation, with the
partial results being
accumulated into a Key that was created to hold the final results. The
point at which the
accumulating Key is created has no knowledge of what kind of Key is needed.
A possible fix is to create the notion of a ranked search. As a search
is done, a flag is
passed indicating that ranking information is desired. When keys are
created, a TallyPassage
will be created if ranking is desired, otherwise the "advanced" user's
choice of Passage
will be used.
Today, match uses ranking to determine the best 20 matches. It would
continue to do so.
However, it would become explicit rather than implicit.
Some more problems:
I don't know if it were deliberate or not, but when a search was done in
the past, the label
for the tab reflected the search request, not the results. Today it
gives the results.
Match should return its results in ranked order.
More information about the jsword-devel
mailing list