[ 
https://issues.apache.org/jira/browse/SOLR-2378?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13015011#comment-13015011
 ] 

Dawid Weiss commented on SOLR-2378:
-----------------------------------

Soliciting feedback on the following questions:
- suggesters currently have float weights associated with terms; can these 
floats be bucketed and returned in approximation or do they need to be exact 
copies of the input? For automata, bucketed weights (to, let's say 5-10 
different values) provide terrific speed/size improvements, so if this is not a 
rigid requirement, I'd use them.
- is there any info on threading of Solr components? I am in particular looking 
for mutable object fields in the suggester (can a single suggester instance be 
accessed by multiple threads at the same time)?

I've implemented preliminary FST-based lookup (without weights yet). Speed-wise 
it doesn't rock because data is converted to/from utf8 on input/output and 
sorted during construction, but it is still acceptable, even at this early 
stage I think:

{noformat}
JaspellLookup        buildTime[ms]=112 lookupTime[ms]=288
TSTLookup            buildTime[ms]=115 lookupTime[ms]=103
FSTLookup            buildTime[ms]=464 lookupTime[ms]=145
{noformat}

now... that was speed only, check out the in-memory size :)

{noformat}
JaspellLookup        size[B]=81,078,997
TSTLookup            size[B]=53,453,696
FSTLookup            size[B]=2,909,396
{noformat}

(This benchmark stores very limited vocabulary items -- long numbers only, so 
it is skewed from reality, but it's nice to see something like this, huh?).


> FST-based Lookup (suggestions) for prefix matches.
> --------------------------------------------------
>
>                 Key: SOLR-2378
>                 URL: https://issues.apache.org/jira/browse/SOLR-2378
>             Project: Solr
>          Issue Type: New Feature
>          Components: spellchecker
>            Reporter: Dawid Weiss
>            Assignee: Dawid Weiss
>              Labels: lookup, prefix
>             Fix For: 4.0
>
>
> Implement a subclass of Lookup based on finite state automata/ transducers 
> (Lucene FST package). This issue is for implementing a relatively basic 
> prefix matcher, we will handle infixes and other types of input matches 
> gradually. Impl. phases:
> - write a DFA based suggester effectively identical to ternary tree based 
> solution right now,
> - baseline benchmark against tern. tree (memory consumption, rebuilding 
> speed, indexing speed; reuse Andrzej's benchmark code)
> - modify DFA to encode term weights directly in the automaton (optimize for 
> onlyMostPopular case)
> - benchmark again
> - add infix suggestion support with prefix matches boosted higher (?)
> - benchmark again
> - modify the tutorial on the wiki [http://wiki.apache.org/solr/Suggester]

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to