创新互联Django4.0教程:Django4.0搜索-文档搜索

标准数据库操作对于大量文本搜索来说太过简陋了。虽然上面的示例可以看作是对字符串的操作,但是全文搜索查看的是实际的单词。依据所使用的系统,可以采用下面的某些方法:

网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了横山免费建站欢迎大家使用!

  • 忽略 “停用词语”,例如 "a","the","and"。
  • 词干化,这样 "pony" 和 "ponies" 会被认为是一样的。
  • 根据不同的标准为单词设置权重,例如其在文本中出现的频率,或所属字段(如标题或关键字)的重要性。

使用搜索软件有很多选项,最常见的有 Elastic 和 Solr。它们都是基于全文搜索的解决方案。要用它们搜索来自 Django 模型的数据,你需要一个抽象层,将数据(包括对数据库 id 的指针)转换为文本文档。当使用该引擎的某次搜索返回了一份文档,你可以在数据库中查看它。有很多第三方库被设计为处理这种问题。

PostgreSQL 支持

PostgreSQL 内置了其专属的全文本搜索实现。虽然并不像其它搜索引擎那样强大,但它的优点是内置在数据库中,所以它能很方便的与其它关联查询条件进行联合查询,如按分类查询。
django.contrib.postgres​ 模块提供了一些助手函数来执行这些查询。例如,查询可能筛选出所有提到了 "cheese" 的博客条目:

>>> Entry.objects.filter(body_text__search='cheese')
[, ]

你也可以在联合字段或关联模型上进行筛选:

>>> Entry.objects.annotate(
...     search=SearchVector('blog__tagline', 'body_text'),
... ).filter(search='cheese')
[
    ,
    ,
    ,
]

网站题目:创新互联Django4.0教程:Django4.0搜索-文档搜索
URL标题:http://www.mswzjz.com/qtweb/news40/176840.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联