H5W3
当前位置:H5W3 > 未分类 > 正文

Django结合结巴分词40行代码实现简单的按标题搜索功能

在使用django开发一个网站的时候需要用到简单的搜索功能,但是基于数据量不大,没有使用elasticsearch,直接使用了结巴分词,基本思路如下:

数据量大概在1万条左右

首先引入结巴jieba分词python库,具体的使用方式请参照其官方文档:https://github.com/fxsjy/jieba

大概不到40行代码实现简单搜索功能,如下:

if len(keyword) < 1:
            raise Exception("请输入至少1个文字")
        if len(keyword) < 10:
            print("分词开始")
            kws = jieba.cut(keyword, cut_all=False)
            # print("Default Mode: " + "/".join(kws))  # 精确模式,返回的为迭代器,只能使用一次
            kws = "/".join(kws).split("/")
            ret = xp_service.search("kws", kws, start, page_size)

sql语句采用模糊查询,原理为:只有标题中包含所有的由结巴分词之后得到的词才算满足条件的结果,mysql语句如下:

sql = '''
                select *
                from xp
                where status = '1'
                      and del_flag = '0'
                      and volume >= 6
        '''
        if(type == "kws"):
            for kw in kws:
                sql += ' and title like "%{kw}%"'.format(kw = kw)
        sql += ' limit %s, %s' % (start, page_size)

这样就简单的实现按标题搜索功能了,查询结果还是基本满足要求的。

具体例子请见:https://www.40hs.com

 

本文地址:H5W3 » Django结合结巴分词40行代码实现简单的按标题搜索功能

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址