lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Muir (Commented) (JIRA)" <>
Subject [jira] [Commented] (LUCENE-3714) add suggester that uses shortest path/wFST instead of buckets
Date Tue, 14 Feb 2012 16:02:00 GMT


Robert Muir commented on LUCENE-3714:

I played with a lot of variations on this patch:
* generified the shortest path method to take things like Comparators/Comparable
* tried different algebra/representations with that

I think we should keep the code wired to Long for now. according to the benchmark
any generification is like a 5-10% overall perf hit, and I don't see a need for
anything but Long.

I think as far as representation, we need to integrate the offline sort, find min/max 
float values and scale to <precision> space, e.g. if precision is 32 then 
Integer.MAX_VALUE - scaledWeight. 

I tried different representations and they just add more complexity (e.g. negative outputs),
without saving much space at all. This patch uses Integer precision and is only 10% larger
than the previous impl.

We don't even need precision to be configurable really,
we could wire it to integers as a start. But maybe later someone could specify it, e.g.
if they specified 8 then they basically get the same result as bucketed algorithm today...

> add suggester that uses shortest path/wFST instead of buckets
> -------------------------------------------------------------
>                 Key: LUCENE-3714
>                 URL:
>             Project: Lucene - Java
>          Issue Type: New Feature
>          Components: modules/spellchecker
>            Reporter: Robert Muir
>         Attachments: LUCENE-3714.patch, LUCENE-3714.patch, LUCENE-3714.patch, LUCENE-3714.patch,
LUCENE-3714.patch,, out.png
> Currently the FST suggester (really an FSA) quantizes weights into buckets (e.g. single
byte) and puts them in front of the word.
> This makes it fast, but you lose granularity in your suggestions.
> Lately the question was raised, if you build lucene's FST with positiveintoutputs, does
it behave the same as a tropical semiring wFST?
> In other words, after completing the word, we instead traverse min(output) at each node
to find the 'shortest path' to the 
> best suggestion (with the highest score).
> This means we wouldnt need to quantize weights at all and it might make some operations
(e.g. adding fuzzy matching etc) a lot easier.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message