python搜索引擎和框架

1.安装全文检索包

# 全文检索框架
pip install django-haystack
# 全文检索引擎
pip install whoosh
# 中文分词框架
pip install jieba

heystack一些配置都是固定写好的,需要注意下

2.配置全文检索

  • 1.安装haystack应用

    INSTALLED_APPS = (
      ...
      ‘haystack‘,
    )
    
  • 2.在settings.py文件中配置搜索引擎
    # 配置搜索引擎后端
    HAYSTACK_CONNECTIONS = {
      ‘default‘: {
          # 使用whoosh引擎:提示,如果不需要使用jieba框架实现分词,就使用whoosh_backend
          ‘ENGINE‘: ‘haystack.backends.whoosh_cn_backend.WhooshEngine‘,
          # 索引文件路径
          ‘PATH‘: os.path.join(BASE_DIR, ‘whoosh_index‘),  # 在项目目录下创建文件夹 whoosh_index
      }
    }
    # 当添加、修改、删除数据时,自动生成索引
    HAYSTACK_SIGNAL_PROCESSOR = ‘haystack.signals.RealtimeSignalProcessor‘
  • 3.在要建立索引的表对应的应用下,创建search_indexes.py文件 
      • 定义商品索引类GoodsSKUIndex(),继承自indexes.SearchIndexindexes.Indexable
      • from haystack import indexes
        from .models import GoodsSKU

        class GoodsSKUIndex(indexes.SearchIndex, indexes.Indexable):
          # 定义字符类型的属性,名称固定为text
          # document=True表示建立的索引数据存储到文件中
          # use_template=True表示通过模板指定表中的字段,用于查询
          text = indexes.CharField(document=True, use_template=True)

          # 针对哪张表进行查询
          def get_model(self):
            return GoodsSKU

          # 针对哪些行进行查询
          def index_queryset(self, using=None):
            return self.get_model().objects.filter(isDelete=False)               

  • 4.指定要建立索引的字段

    • templates下面新建目录search/indexes/应用名

      • 比如goods应用中的GoodsSKU模型类中的字段要建立索引文件夹:search/indexes/goods
      • 在新建目录下,创建goodssku_text.txt,并编辑要建立索引的字段,如下图
      • templates/search/indexes/goods/goodssku_text_txt
  • 5.生成索引文件

  • # 在终端运行, 提示是否要删除原有信息, 输入y
  • python manage.py rebuild_index  
  • 搜索表单处理

    • 搜索地址:/search/
    • 搜索方法:get
    • 接收关键字:q
    • action="/search/"    method="get"    文本框的name= "q" 为固定写法
                                                                                   

配置搜索地址正则

import haystack.urls

url(r‘^search/‘, include(haystack.urls)),

测试搜索效果,接收结果

  • 全文检索结果:

    • 搜索出结果后,haystack会把搜索出的结果传递给templates/search目录下的search.html
    • 对于search.html,我们需要自己建立该html文件,并定义自己的搜索结果页面 
  • 传递的上下文包括:
    • query:搜索关键字
    • page:当前页的page对象
    • paginator:分页paginator对象
    • 提示:
      • settings.py文件中设置HAYSTACK_SEARCH_RESULTS_PER_PAGE
      • 通过HAYSTACK_SEARCH_RESULTS_PER_PAGE可以控制每页显示数量
      • 每页显示一条数据:HAYSTACK_SEARCH_RESULTS_PER_PAGE = 1
  • search.html编写,类似商品列表页面

  

原文地址:https://www.cnblogs.com/yuanzhengchi/p/8708620.html

时间: 2024-10-08 20:31:06

python搜索引擎和框架的相关文章

Python之Web框架介绍

所有的语言Web框架本质其实就是起一个socket服务端,监听一个端口,然后运行起来 Web框架包含两部分,一部分是socket,另外一部分是业务的逻辑处理,根据请求的不同做不同的处理 Python的Web框架分成了两类, 即包含socket也包含业务逻辑处理的(tornado) 不包含socket(框架本身通过第三方模块实现socket)只包含业务逻辑处理(django,Flask) WSGI的全称是Web Server Gateway Interface,翻译过来就是Web服务器网关接口.具

Python开源爬虫框架scrapy的了解与认识

很多学习Python编程语言的朋友都会学习Python网络爬虫技术,也有专门学习网络爬虫技术的,那么如何学习Python爬虫技术呢,今天就给大家讲讲使用Python抓取数据时非常受欢迎的Python抓取框架scrapy,下面一起学习下Scrapy的架构,便于更好的使用这个工具. 一.概述 下图显示了Scrapy的大体架构,其中包含了它的主要组件及系统的数据处理流程(绿色箭头所示).下面就来一个个解释每个组件的作用及数据的处理过程. 二.组件 1.Scrapy Engine(Scrapy引擎) S

测试Flask+PYTHON的WEB框架

参数URL: http://blog.csdn.net/qwiwuqo/article/details/8970621 安装flask之前,你必须要先安装python和easy_install. 安装 virtualenv,这个主要是用来做解释器环境隔离的,避免同一机器上的多个python或者多个python的库依赖. 然后cd到myvir目录的Scripts下输入activate.bat,就进入了虚拟环境了,然后输入easy_install Flask. 测试Flask+PYTHON的WEB框

python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)

操作环境:python3 在上一文中python爬虫scrapy框架--人工识别登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前的文章便于理解 本文将介绍如何用scrapy来登录知乎. 不多说,直接上代码: import scrapy import re import json class ZhihuSpider(scrapy.Spider): name = 'zhihu' allowed_domains = ['www.zhi

Python -- Web -- 使用框架

Python的web框架有很多: Flask,Django,Zope2,Web.py,Web2py,Pyramid,Bottle, Tornado... Flask 轻量级,比较简单 from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run()

python nose测试框架全面介绍一

一.简介      nose 是python自带框架unttest的扩展,使测试更简单高效:nose是一个开源的项目,可以在官网上下载源码 1.快速安装 有以下几中安装方式: easy_install nose pip install nose 对于python怎么安装easy_install或pip工具,这里不介绍,网上很多教程. 如果你没有安装easy_install或pip工具,你可以去官网上下载安装包,然后解压,并cd进放解压的目录,然后输入以下代码: python setup.py i

Python Scrapy爬虫框架安装、配置及实践

近期研究业界安卓APP主要漏洞类型.wooyun算是国内最有名的漏洞报告平台,总结一下这上面的漏洞数据对后面测试与分析漏洞趋势有指导意义,因此写一个爬虫. 不再造轮子了,使用Python的Scrapy框架实现之. 一.安装 64位系统安装时,一定要注意Python的位数与Scrapy及其依赖库位数一致.否则各种坑爹Bug 安装32位Python 2.7 下载并安装pip(方便自动安装管理依赖库) https://pypi.python.org/pypi/pip/7.1.2 下载源码,python

Python之Web框架Django

Python之Web框架: Django 一.  Web框架的本质: 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 #!/usr/bin/env python 2 #coding:utf-8 3 4 #web框架的基础结构,几乎所有开发者都是基于此基础结果进行扩展. 5 6 import socket 7 8 def handle_request(client): 9 buf = client.recv(1024) 10 clien

selenium + python自动化测试unittest框架学习(二)

1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py >test_case >__init__.py >test_case1..... >public >__init__.py >login.py >loginout.py test_case文件夹主要存放测试用例,且测试用例命名以test_开头 public文件夹是test