举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > django 全文搜索 Django4.0 搜索-文档搜索

django 全文搜索 Django4.0 搜索-文档搜索

2023-03-31 18:18 Django4中文教程

django 全文搜索 Django4.0 搜索-文档搜索

django 全文搜索 Django4.0 搜索-文档搜索

django 全文搜索

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

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

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

PostgreSQL 支持

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

>>> Entry.objects.filter(body_text__search="cheese")
[<Entry: Cheese on Toast recipes>, <Entry: Pizza recipes>]

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

>>> Entry.objects.annotate(
...     search=SearchVector("blog__tagline", "body_text"),
... ).filter(search="cheese")
[
    <Entry: Cheese on Toast recipes>,
    <Entry: Pizza Recipes>,
    <Entry: Dairy farming in Argentina>,
]


阅读全文
以上是编程学为你收集整理的django 全文搜索 Django4.0 搜索-文档搜索全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部