python中如何django使用haystack:全文检索的框架的实例讲解


当前第2页 返回上一页

3. site-packages/haystack/backends/ 创建一个文件名为ChineseAnalyzer.py文件写入下面代码,用于中文分词


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

import jieba

from whoosh.analysis import Tokenizer, Token

 class ChineseTokenizer(Tokenizer):

 def __call__(self, value, positions=False, chars=False,

     keeporiginal=False, removestops=True,

     start_pos=0, start_char=0, mode='', **kwargs):

  t = Token(positions, chars, removestops=removestops, mode=mode,

     **kwargs)

  seglist = jieba.cut(value, cut_all=True)

  for w in seglist:

   t.original = t.text = w

   t.boost = 1.0

   if positions:

    t.pos = start_pos + value.find(w)

   if chars:

    t.startchar = start_char + value.find(w)

    t.endchar = start_char + value.find(w) + len(w)

   yield t

 def ChineseAnalyzer():

 return ChineseTokenizer()

6.

1. 复制whoosh_backend.py文件,改为如下名称

whoosh_cn_backend.py

在复制出来的文件中导入中文分词模块

from .ChineseAnalyzer import ChineseAnalyzer

2. 更改词语分析类 改成中文

查找analyzer=StemmingAnalyzer()改为analyzer=ChineseAnalyzer()

7. 最后一步就是建初始化索引数据

python manage.py rebuild_index

8. 创建搜索模板 在templates/indexes/ 创建search.html模板

搜索结果进行分页,视图向模板中传递的上下文如下

query:搜索关键字

page:当前页的page对象

paginator:分页paginator对象

9. 在自己的应用视图中导入模块

from haystack.generic_views import SearchView

定义一个类重写get_context_data 方法,这样就可以往模板中传递自定义的上下文。


1

2

3

4

5

6

class GoodsSearchView(SearchView):

  def get_context_data(self, *args, **kwargs):

    context = super().get_context_data(*args, **kwargs)

    context['iscart']=1

    context['qwjs']=2

    return context

应用的urls文件中添加这条url 将类当一个视图的方法使用 .as_view()

1

url('^search/$', views.BlogSearchView.as_view())

以上就是python中如何django使用haystack:全文检索的框架的实例讲解的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

Python终端会话是什么

Python中flask蓝图的使用方法(附代码)

linux和Python先学哪个

学习Python模块导入机制与大型项目的规范

详解介绍Python的发展起源及基础知识

Python线程优先级队列是什么?线程优先级的设置方法有哪些?

Python下载模块然后怎么安装

Python中文件操作的相关内容总结(附示例)

Python介绍嵌套 json 秒变 dataframe!

Python下载要钱吗

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...