前言:

全文检索就是针对所有内容进行动态匹配搜索的概念,针对特定的关键词建立索引并精确匹配达到性能优化的目的

class Whoose_seach(object):
analyzer = ChineseAnalyzer() # 导入中文分词工具
def __init__(self,table,field,url):
self.field=field
self.schema_dict={"pk":ID(stored=True),"url":TEXT(stored=True),self.field:TEXT(stored=True, analyzer=self.analyzer)}
self.url=url
self.table=table
#self.schema = Schema(pk=ID(stored=True), desc=TEXT(stored=True, analyzer=self.analyzer), url=TEXT(stored=True)) # 创建索引结构
self.schema = Schema(**self.schema_dict)
self.ix = create_in("path", schema=self.schema, indexname=self.table._meta.model_name) # 创建索引(path 为创建索引的目录,indexname为索引名称)
self.index = open_dir("path", indexname=self.table._meta.model_name) # 读取建立好的索引 def index_building(self):
writer =self.ix.writer() #填充内容
query=self.table.objects.all()
for item in query:
#url='http://172.17.10.112:8001/arya/cmdb/worker_order/see/?id=%s'%(item.pk)
url = self.url%(item.pk)
writer.add_document(pk=str(item.pk),desc=item.desc,url=url) # 此处为添加的内容
writer.commit() def seach(self,key_word):
self.index_building()
ret=[]
with self.index.searcher() as searcher:
parser = QueryParser(self.field,self.schema)
myquery = parser.parse(key_word)
facet = FieldFacet("pk", reverse=False) # 按序排列搜索结果
results = searcher.search(myquery, limit=None,sortedby=facet) # limit为搜索结果的限制,默认为10,详见博客开头的官方文档
for result1 in results:
ret.append(dict(result1))
else:
return ret if __name__ == '__main__':
from cmdb import models
Whoose_seach_interface = Whoose_seach(models.Worker_order, 'desc','http://172.17.10.112:8001/arya/cmdb/worker_order/see/?id=%s')
print(Whoose_seach_interface.seach('张根'))

whoose

from haystack.query import SearchQuerySet
from haystack.inputs import AutoQuery
sqs = SearchQuerySet().filter(desc=AutoQuery('张根'))
for i in sqs:
print(i)

调用haystack的搜素API

Haystack的API

https://www.jianshu.com/p/e323e0d37c2b

whoosh参考

胥爱军

Django全文检索(django-haystack+whoosh+jieba)的更多相关文章

  1. Django学习---快速搭建搜索引擎(haystack + whoosh + jieba)

    Django下的搜索引擎(haystack + whoosh + jieba) 软件安装 haystack是django的开源搜索框架,该框架支持Solr,Elasticsearch,Whoosh, ...

  2. Django之使用haystack+whoosh实现搜索功能

    为了实现项目中的搜索功能,我们使用的是全文检索框架haystack+搜索引擎whoosh+中文分词包jieba 安装和配置 安装所需包 pip install django-haystack pip ...

  3. 使用haystack实现django全文检索搜索引擎功能

    前言 django是python语言的一个web框架,功能强大.配合一些插件可为web网站很方便地添加搜索功能. 搜索引擎使用whoosh,是一个纯python实现的全文搜索引擎,小巧简单. 中文搜索 ...

  4. DJANGO-天天生鲜项目从0到1-009-搜索功能实现(django-haystack+whoosh+jieba)

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

  5. django-haystack+whoosh+jieba实现中文全文搜索

    先上效果图 附上个人网站:https://liyuankun.cn 安装依赖库 注意:这里我们不安装django-haystack,因为要添加中文分词的功能很麻烦,所以我直接集成了一个中文的djang ...

  6. Django settings — Django 1.6 documentation

    Django settings - Django 1.6 documentation export DJANGO_SETTINGS_MODULE=mysite.settings django-admi ...

  7. Python之路【第二十三篇】:Django 初探--Django的开发服务器及创建数据库(笔记)

    Django 初探--Django的开发服务器及创建数据库(笔记) 1.Django的开发服务器 Django框架中包含一些轻量级的web应用服务器,开发web项目时不需再对其配置服务器,Django ...

  8. Django 初探--Django的开发服务器及创建数据库(笔记)

    1.Django的开发服务器 Django框架中包含一些轻量级的web应用服务器,开发web项目时不需再对其配置服务器,Django提供的内置服务器可以在代码修改时自动加载,从而实现网站的迅速开发. ...

  9. Django之django模型层二多表操作

    一 创建模型 表和表之间的关系 一对一.多对一.多对多 ,用book表和publish表自己来想想关系,想想里面的操作,加外键约束和不加外键约束的区别,一对一的外键约束是在一对多的约束上加上唯一约束. ...

随机推荐

  1. 数据分片一致性hash

    一致性hash 一致性hash是将数据按照特征值映射到一个首尾相接的hash环上,同时也将节点(按照IP地址或者机器名hash)映射到这个环上.对于数据,从数据在环上的位置开始,顺时针找到的第一个节点 ...

  2. IP通信第四周作业

    一.选择交换机的主要技能指标是什么? a.背板带宽.二/三层交换吞吐率. b.VLAN类型和数量. c.交换机端口数量及类型. d.支持网络管理的协议和方法.需要交换机提供更加方便和集中式的管理. e ...

  3. java线程学习之volatile关键字

    volatile变量的主要作用:是使变量在多个线程间可见. 在java中每一个线程都会有一块工作内存区,其中存放着所有线程共享的主内存的变量值的拷贝.当线程执行时,它在自己的工作内存区操作这些变量,为 ...

  4. CS 2505 Computer Organization I C09: Rational Number

    CS 2505 Computer Organization I C09: Rational Number Type in CVersion 5.00 This is a purely individu ...

  5. 将项目添加到服务上时报web modules的错误

    将项目添加到服务上时报web modules的错误如下图: 这是tomcat的版本和web modules的版本不支持造成的,如果在如下地方修改不了: 这时候就要在项目的根目录修改如下图: 用工具打开 ...

  6. 如何在Windows上的Jupyter Notebook中安装和运行PySpark

    When I write PySpark code, I use Jupyter notebook to test my code before submitting a job on the clu ...

  7. 【我的前端自学之路】【HTML5】.html和.htm的区别

    以下为自学笔记内容,仅供参考. 转发请保留原文链接:https://www.cnblogs.com/it-dennis/p/10508171.html .htm 和 .html 的区别 .htm 和 ...

  8. WebPack命令执行的时候,其内部处理逻辑是什么

    1.首先webpack发现并没有通过命令的形式,给它指定入口和出口 2.向根目录查找“webpack.config.js”配置文件 3.解析这个配置文件,并得到配置文件中导出的配置对象 4.当拿到配置 ...

  9. video 自动循环播放

    video 只加autoplay并不能自动播放,需要再加上muted   <video controls="controls" autoplay loop muted> ...

  10. loadrunner中使用web_custom_request函数调用webservice接口

    1.使用的接口地址: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName 以SOAP ...