You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Robert Muir (Commented) (JIRA)" <ji...@apache.org> on 2012/02/14 17:02:00 UTC
[jira] [Commented] (LUCENE-3714) add suggester that uses shortest
path/wFST instead of buckets
[ https://issues.apache.org/jira/browse/LUCENE-3714?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13207798#comment-13207798 ]
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: https://issues.apache.org/jira/browse/LUCENE-3714
> 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, TestMe.java, 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: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org