我认为,尽管sqlite是一款了不起的软件,但其全文搜索功能却非常有限。相反,您可以使用带有某些后端(例如Elasticsearch)的Haystack
Django应用程序为数据库建立索引。就FTS而言,具有此设置(仍然能够访问您的sqlite数据库)似乎是最可靠,最灵活的方式。
Elasticsearch具有基于Levenshtein距离的模糊搜索(简而言之,它将处理您的“示例”查询)。因此,您需要做的是正确的查询类型:
from haystack.forms import SearchFormfrom haystack.generic_views import SearchViewfrom haystack import indexesclass QscriptIndex(indexes.SearchIndex, indexes.Indexable): v = indexes.CharField(document=True) def get_model(self): return Qscriptclass QscriptSearchForm(SearchForm): text_fuzzy = forms.CharField(required=False) def search(self): sqs = super(QscriptSearchForm, self).search() if not self.is_valid(): return self.no_query_found() text_fuzzy = self.cleaned_data.get('text_fuzzy') if text_fuzzy: sqs = sqs.filter(text__fuzzy=text_fuzzy) return sqsclass QscriptSearchView(SearchView): form_class = QscriptSearchForm更新:只要PostgreSQL具有Levenshtein距离功能,您还可以将其用作Haystack后端以及独立的搜索引擎。如果选择第二种方法,则必须实现自定义查询表达式,如果使用的是最新版本的Django,这相对容易。



