前言:

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

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参考

胥爱军

最新文章

  1. Leetcode: Convert sorted list to binary search tree (No. 109)
  2. Android 通信 EventBus
  3. Cookie操作
  4. Lucas
  5. C#语法杂谈
  6. 通过Alexa API获取Alexa排名
  7. 20151120 jsp相关
  8. querySelectorAll 和 jQuery选择器
  9. kafka 0.10.2 解决java无法生产消息到指定topic问题
  10. 使用BigQuery分析GitHub上的C#代码
  11. PS调出韩式米黄色室内婚纱照片
  12. 面向对象__call__
  13. IP地址及网络常识
  14. JavaScript的数据类型和变量
  15. 【PS技巧】常用概念和功能操作
  16. react diff 原理
  17. PHP(表单元素)
  18. MongoDB的“not master and slaveok=false”错误解决
  19. python 结构化数据解析
  20. 16 Go Concurrency Patterns: Timing out, moving on GO并发模式: 超时, 继续前进

热门文章

  1. vue:vuex中mapState、mapGetters、mapActions辅助函数及Module的使用
  2. ceph rbd双挂载导致ext4文件系统inode链接数据污染
  3. psql 存储过程
  4. js中的排序方法
  5. phpstudy-5.6.27-nts 安装redis扩展
  6. Dell3470无法开机或开机黑屏情况下检测屏幕是否正常
  7. 自制操作系统Antz(12)——承上启下
  8. 【Alpha】Scrum Meeting 9
  9. cv2.getRotationMatrix2D函数
  10. HTML 转 PDF的两种实现方式