* fix typo
* make function obsolete
it is not used in the code
* rewrite the function that converts chinese chars to pinyin
1. Only difference in this rewrite is instead of returning 2D array, return as a combined single string of all the possible pinyin combination. Since fuzzy search does character matching, this shouldn't be a problem.
2. Added a function that returns a custom language converter. In this case Pinyin converter. New converters can be added.
* Use new language converter param + strip out ScoreForPinyin method
* update
* Change parameter name
* fix failing tests
* WIP
* Remove todo
There should be some distinction between score after precision filter and actual raw score derived from FuzzySearch. Although so far RawScore is used in testing, but it seems to describe the structure. Originally it was to avoid assigning score directly as it would be hard to reason about that output of FuzzySearch score is.
* Add constructors, remove default to enforce required properties
* remove setting rawscore in SearchPrecision
* Change method name to reflect intention
* Change parameter name + update comment
* update
* Remove params comment
Co-authored-by: theClueless <14300910+theClueless@users.noreply.github.com>
- Moved if statement that checks if all query substrings are matched into a funciton
- convert into shorthand expression the if statement that checks if all words are fully matched
- Move checking if there is a prev compare string char match into function
- Move updating of index list when a better match is found for the first substring logic into function
Flag is used in method "ShouldUsePinyin()" to avoid calling Alphabet
service. Otherwise, tests applying to StringMatcher.FuzzySearch() would
fail because the pinyin helper library fails to initialize.
The MatchResult will always get the maximum score from either
ScoreForPinyin() or CalculateSearchScore(). ScoreForPinyin() is
completely dependant on the "ShouldUsePinyin" global setting.
The search precision must be used, so it makes sense to apply the filter
directly on score assignment. Score will be "0" if precision filter
was not met.
As Alphabet class is static, its methods could be used without
ever calling Alphabet.initialize(_settings) beforehand which would end
in an exception. Therefor only _shouldUsePinyin settings needed will
be transferred with a given default value.