Details
-
Improvement
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
4.4, 4.3.1
-
None
-
None
-
New, Patch Available
Description
In my code I use both suggesters for the same FST. I use AnalyzerSuggester#store() to create the FST and later on AnalyzingSuggester#load() and FuzzySuggester#load() to use it.
This approach works very well but it unnecessarily creates 2 fst instances resulting in 2x memory consumption.
It seems that for the time being both suggesters use the same FST format.
The following trivial method in AnalyzingSuggester provides the possibility to share the same FST among different instances of AnalyzingSuggester. It has been tested in the above scenario:
public boolean shareFstFrom(AnalyzingSuggester instance)
{
if (instance.fst == null)
this.fst = instance.fst;
this.maxAnalyzedPathsForOneInput = instance.maxAnalyzedPathsForOneInput;
this.hasPayloads = instance.hasPayloads;
return true;
}
One could use it like this:
analyzingSugg = new AnalyzingSuggester(...);
fuzzySugg = new FuzzySuggester(...);
analyzingSugg.load(someInputStream);
fuzzySugg = analyzingSugg.shareFstFrom(analyzingSugg);