Вы можете сопоставить Co
с Company
, используя Fuzzy Search в Whoosh, но Вы не должны делать, потому что разница между Co
и Company
велика. Co
похоже на Company
, так как Be
похоже на Beast
и ny
на Company
. Вы можете себе представить, насколько плохими и большими будут результаты поиска.
Однако, если вы хотите сопоставить Compan
или compani
или Companee
с Company
, вы можете сделать это, используя персонализированный класс FuzzyTerm
со значением по умолчанию maxdist
, равным 2 или более:
maxdist - Максимальное расстояние редактирования от заданного текста.
class MyFuzzyTerm(FuzzyTerm):
def __init__(self, fieldname, text, boost=1.0, maxdist=2, prefixlength=1, constantscore=True):
super(MyFuzzyTerm, self).__init__(fieldname, text, boost, maxdist, prefixlength, constantscore)
Тогда:
qp = QueryParser("name", schema=ix.schema, termclass=MyFuzzyTerm)
Вы можете сопоставить Co
с Company
, установив maxdist
в 5
, но это, как я сказал, дает плохие результаты поиска. Я предлагаю оставить maxdist
от 1
до 3
.
Если вы ищете для соответствия словосочетания языковые вариации, вам лучше использовать whoosh.query.Variations
.
Примечание: более старые версии Whoosh имеют minsimilarity
вместо maxdist
.