<强> 1第一步:强>
全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理。
干草堆:全文检索的框架、支持嗖,solr, Xapian, Elasticsearc四种全文检索引擎
呼:纯Python编写的全文搜索引擎对于小型的站点,嗖已经足够使用
jieba:一款免费的中文分词包
<强> 1)在虚拟环境中依次安装需要的包。强>
pip安装django-haystack pip安装嗖 pip安装jieba
<强> 2注册应用强>
INSTALLED_APPS=( … “干草堆”, )
<>强创建的模型强>
类GoodInfo (models.Model): 消息=models.CharField (max_length=100) 内容=models.TextField () def __str__(自我): 返回self.message >之前<强> 3在设置中配置搜索引擎强>
#全文搜索引擎的配置 HAYSTACK_CONNECTIONS={ “默认”:{ #使用呼引擎 “发动机”:“haystack.backend.whoosh_cn_backend.WhooshEngine”, #索引文件路径 “路径”:os.path。加入(BASE_DIR whoosh_index), } } #当添加,修改,删除数据时,自动生成索引 HAYSTACK_SIGNAL_PROCESSOR=' haystack.signals.RealtimeSignalProcessor ' >之前<强> 4在项目的urls . py中添加搜索的配置。强>
url (r ^搜索/,包括(haystack.urls)),<强> 5在创建的应用目录下创建search_indexes。py编写一下程序强>
从干草堆导入索引 从进口GoodInfo得閒 #对指定的某个类的某些数据建立索引 类GoodInfoIndex(索引。SearchIndex indexes.Indexable): 文本索引。CharField(文档=True, use_template=True) def get_model(自我): 返回GoodInfo def index_queryset(自我,使用=None): 返回self.get_model () .objects.all () >之前6在模板目录下创建“搜索/索引/app06/蹦柯肌?app06为自己创建的应用程序的名称)
在文件夹中创建“goodinfo_text。txt”文件。(goodinfo为自己创建的数据库的名称)
#指定索引的属性 {{对象。内容}}(内容为自己创建的表的一个字段把这个字段指定为索引字段)<强> 7找到虚拟环境django下安装的干草堆目录。强>
/home/python/.virtualenvs/django/lib/python2.7/网站/干草堆/后端/在上面的目录中创建ChineseAnalyzer.py文件。
进口jieba 从发出嘶嘶声。分析进口记号赋予器,令牌 类ChineseTokenizer(记号赋予器): def __call__(自我价值,位置=False,识字课=False, keeporiginal=False, removestops=True, start_pos=0, start_char=0,模式=",* * kwargs): t=令牌(位置、字符removestops=removestops模式=模式, * * kwargs) seglist=jieba。削减(价值,cut_all=True) 对w seglist: t。原始=t。文本=w t。提高=1.0 如果职位: t。pos=start_pos + value.find (w) 如果字符: t。startchar=start_char + value.find (w) t。endchar=start_char + value.find (w) + len (w) 收益率t def ChineseAnalyzer (): 返回ChineseTokenizer () >之前<强> 8)复制whoosh_backend.py文件,改为如下名称:强>
注意:复制出来的文件名,末尾会有一个空格,记得要删除这个空格。
whoosh_cn_backend.py
<强> 9)打开复制出来的新文件,引入中文分析类,内部采用jieba分词。强>
从进口ChineseAnalyzer .ChineseAnalyzer
<强> 10)更改词语分析类。强>
查找
分析仪=StemmingAnalyzer ()改为
分析仪=ChineseAnalyzer ()<强> 11)初始化索引数据。强>
python管理。py rebuild_index
按照提示输入y后生成索引在主目录下会生成一个whoosh_index文件夹其中放置三个索引文件
按照配置,在管理管理中添加数据后,会自动为数据创建索引,可以直接进行搜索,可以先创建一些测试数据。
django使用全局搜索功能的实例详解