Вы не можете сделать это по умолчанию, потому что вся пунктуация удаляется из индекса с помощью RegexTokenizer
в StandardAnalyzer
. "that's all, folks!"
индексируется как [that,s,all,folks]
Вы можете обойти это либо:
Использование поля KEYWORD
вместо TEXT
, поскольку оно не использует RegexTokenizer
, но вы не сможете выполнять поиск по фразе в поле ключевого слова.
Использование поля TEXT
с StandardAnalyzer
и пользовательским регулярным выражением RegexTokenizer
. В приведенном ниже примере измененное регулярное выражение принимает апострофы в качестве допустимых частей токена.
from whoosh import fields, analysis
myanalyzer = analysis.StandardAnalyzer(expression=r'[\w\']+(\.?\w+)*')
schema = fields.Schema(myfield=fields.TEXT(analyzer=myanalyzer))
Любые апострофы в myfield
теперь будут сохраняться с токеном: [that's, all, folks]
. Если вы отправите запрос как "that's"
или 'that\'s'
, вы получите совпадение. Однако поиск по "that"
больше не найдет этот документ, поскольку такого токена нет.