栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Django的sqlite3数据库中使用全文搜索?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Django的sqlite3数据库中使用全文搜索?

我认为,尽管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,这相对容易。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571159.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号