那就开始今天的教程吧
1.本节课学习集成搜索引擎,对博客文章的标题、内容进行搜索结果的展示,比如说可以在网站中搜索任意想要的一个关键字,找到与这个关键字有关联的所有博客文章,这个也是内容网站必须要有的核心功能,
学习在Django这个框架下,在Python领域中搜索引擎方面有哪些核心的三方库,以及Django是如何集成这些三方库在Web项目中实现搜索的功能,这一讲就是为博客系统添加搜索引擎,能够展示这种按关键字检索的文章内容。
在Python领域中与搜索相关的三个主要的三方库,【haystack】是一个搜索相关的支持的三方库,核心底层会用到whoosh,【whoosh】是比较著名的一个搜索引擎,【jieba】支持中文的分词库,它们三个互相结合在一起,
再被Django框架集成进来,就可以用配置的这种方式来在Django这种框架中开发搜索引擎功能。
2.【whoosh】在所有要检索的内容发生变化的时候,它会有索引文件生成出来,下一次的查找都是在索引里边去查找,不是每次都通过这种持久化的数据源,从文件中再去读取原始的文章内容,这个是搜索引擎它的核心价值,
【haystack】与Django是中间的衔接框架,它开发了很多的API和路由的功能,它的核心会调用whoosh来完成索引和引擎文件的配置和生成的过程,然后whoosh在生成搜索文件的时候,它就会结合着jieba分词库对中文有比较好的支持,
但是haystack核心不仅限于使用whoosh这个库,它还有其他的一些库也是支持的,然后分词引擎也不仅仅只有jieba一个,但是在Django的这个框架中比较推荐。
3.回到开发工具Pycharm中,不是装原生的haystack三方库,要装经过Django和haystack结合二次开发的封装包,叫【django_haystack】,之后再装pip install,是whoosh,然后装pip install jieba,然后来进行配置,
因为Django是国外开源的项目,它底层默认配置的分词器不是jieba,要把它进行替换,在haystack找到whoosh_backend,这个要根据你的环境来配置,在你用的Python解释器的三方库环境下找到haystack这个包,
它下面有一个子目录叫backends,下面有一个脚本叫whoosh_backend,不建议直接改它。
4.比方说放到blog应用下,因为当前的这个搜索引擎就是为blog这个应用来配置的,给它改名字叫cn,要引入jieba提供的分词类,【from jieba.analyse】 就是分析import一个类,这个类是ChineseAnalyzer中文的分析器,
把它导入到whoosh的配置脚本中,找第244行,也就是用到分词器的位置,它现在用的是StemmingAnalyzer,这行注释掉,换成jieba提供的中文的分析器。
5.ReadMe第一讲的时候写过了搭建项目框架的过程,haystack搜索引擎的配置与开发,第一步要安装三个包,三方库都包括【django_haystack,jieba,whoosh】,把它们三个安装好,第二步是重新配置jieba的分词器,
要找到自己环境中haystack三方库的位置,把里边haystack这个目录给大家写一下,然后把backends下面的whoosh_backend.py拷贝出来放到blog目录下,并且改成你自己的名字,加下划线cn,还是加什么都可以。
6.然后修改文件内容,内容有两处,第一步【引入jieba分词类】,第二步【替换原有的分词类】,大概在244行左右,这个大家一定要自己找,因为很有可能会变,因为haystack跟blog一样,它就是一个APP应用,
安装完了之后像CKEditor,要在settings中把它加入到应用中,除了blog comments就是自定义的