校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 基于python + django + whoosh + jieba 分詞器實現站內檢索功能

基于python + django + whoosh + jieba 分詞器實現站內檢索功能

熱門標簽:ai電銷機器人源碼 湛江智能外呼系統廠家 長沙高頻外呼系統原理是什么 地圖標注審核表 外呼并發線路 宿遷星美防封電銷卡 西藏房產智能外呼系統要多少錢 百度地圖標注沒有了 ai電話機器人哪里好

基于 python django

源碼

前期準備

安裝庫:

pip install django-haystack
pip install whoosh
pip install jieba

如果pip 安裝超時,可配置pip國內源下載,如下:

pip install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com   安裝的庫>
pip install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com  django

如果安裝 django-haystack 失敗,先安裝 setuptools_scm .在安裝 django-haystack.

pip install setuptools_scm

項目

 創建項目demo:

# django-admin startproject 項目名>
	django-admin startproject find

切入demo 終端操作,創建app:

# python manage.py startapp APP名>
	python manage.py startapp searchshop

在 settings.py 文件 中的 INSTALLED_APPS 配置 注入 剛才創建APP( 路徑: find/find/settings.py):

INSTALLED_APPS = [
	...
	'searchshop',
	...
]

在創建的APP中添加模型

models.py 文件添加如下(路徑: find/searchshop/models.py):

class Shopp(models.Model):
    shop_name = models.TextField(max_length=200)
    shop_price = models.IntegerField(default=0)
    shop_dsc = models.CharField(max_length=200)

在app 中admin.py文件注冊模型:

admin.py 文件添加如下(路徑: find/searchshop/admin.py):

from .models import Shopp
admin.site.register(Shopp)

執行命令,讓模型生效(修改模型時,都要執行一次,這樣模型才同步!!!):

python manage.py makemigrations 
python manage.py migrate

創建后臺管理帳號

訪問后臺可操作模型數據:

 python manage.py createsuperuser

運行:

python manage.py runserver

訪問: http:127.0.0.1:8080/admin 登錄剛才設置帳號,密碼即可進入:

搭建站內搜索

配置 haystack

在 settings.py 文件 中的 INSTALLED_APPS 配置最底部 注入 haystack( 路徑: find/find/settings.py):

INSTALLED_APPS = [
	...
	'haystack'
]

在app內,添加 search_indexes.py (目錄:find/searchshop/search_indexes.py):

from haystack import indexes
from .models import Shopp # 之前創建的模型

# 修改此處,類名為模型類的名稱+Index,比如模型類為GoodsInfo,則這里類名為GoodsInfoIndex(其實可以隨便寫)
class ArticlePostIndex(indexes.SearchIndex, indexes.Indexable):
    # text為索引字段
    # document = True,這代表haystack和搜索引擎將使用此字段的內容作為索引進行檢索
    # use_template=True 指定根據表中的那些字段建立索引文件的說明放在一個文件中
    text = indexes.CharField(document=True, use_template=True)

    # 對那張表進行查詢
    def get_model(self):  # 重載get_model方法,必須要有!
        # 返回這個model
        return Shopp

    # 建立索引的數據
    def index_queryset(self, using=None):
        # 這個方法返回什么內容,最終就會對那些方法建立索引,這里是對所有字段建立索引
        return self.get_model().objects.all()

生成檢索索引

python manage.py rebuild_index

項目目錄多出whoosh_index文件夾.

修改分詞器

從 pyrhon 安裝路徑 ( \Lib\site-packages\haystack\backends\whoosh_backend.py) 復制一份到app中改名為 whoosh_cn_backend (find/searchshop/whoosh_cn_backend.py)
在頂部引用:

from jieba.analyse import ChineseAnalyzer

找到 (查找 StemmingAnalyzer ) 位置:

 schema_fields[field_class.index_fieldname] = TEXT(
                    stored=True,
                    analyzer=StemmingAnalyzer(),
                    field_boost=field_class.boost,
                    sortable=True,
                )

替換:

schema_fields[field_class.index_fieldname] = TEXT(stored=True, analyzer=ChineseAnalyzer(),
                    field_boost=field_class.boost)

在 INSTALLED_APPS(路徑: find/find/settings.py) 配置后面 后面添加:

HAYSTACK_CONNECTIONS = {
    'default': {
        # 指定whoosh引擎 (之前創建的whoosh_cn_backend)
        'ENGINE': 'searchshop.whoosh_cn_backend.WhooshEngine',
        # 'ENGINE': 'jsapp.whoosh_cn_backend.WhooshEngine',      # whoosh_cn_backend是haystack的whoosh_backend.py改名的文件為了使用jieba分詞
        # 索引文件路徑
        'PATH': os.path.join(BASE_DIR, 'whoosh_index'),
    }
}
 # 添加此項,當數據庫改變時,會自動更新索引,非常方便
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

添加 templates

在APP中創建 templates文件夾.

添加內容檢索內容

在templates文件夾下創建文件夾 search -> indexes -> searchshop( search + APP名);
路徑( 目錄: find/searchshop\templates\search\indexes\searchshop) 添加Shopp_text.txt(APP名_text.txt): (需要檢索的字段名)

{{object.shop_name}}
{{object.shop_dsc}}
{{object.shop_price}}

添加頁面模板

在templates文件夾下創建文件夾(searchshop) 下創建index.html:

{% load highlight %}
!DOCTYPE html>
html lang="en">
head>
    meta charset="UTF-8">
    title>商品列表/title>
    style>
        span.highlighted {
            color: red;
        }
    /style>
/head>
body>
    div class="search">
        form method="get" action="{% url 'shop:search' %}">
            input type="text" name="q" placeholder="a搜索商品">
            input type="submit" value="搜索">
        /form>
    /div>
    {% if shop_list and query %}
    ul>
        {% for question in shop_list %}
        li>
            {% highlight question.object.shop_name with query %}
            價格: {% highlight question.object.shop_price with query %}
            span class="post-author"> a> {% highlight question.object.shop_dsc with query %} /a>/span>
        /li>
        {% endfor %}
    /ul>
    {% else %}
    p>No polls are available./p>
    {% endif %}
/body>
/html>

load highlight : 加載高亮.
query : 檢索詞
shop_list : 檢索結果

視圖層

目錄: find/searchshop/views.py

from django.shortcuts import render
from django.http import HttpResponse
#Create your views here.
from .models import Shopp
from haystack.forms import  ModelSearchForm
from haystack.query import EmptySearchQuerySet
def index(request):
   shop_list = Shopp.objects.all()
   context = {
       'query': '',
       'shop_list': shop_list
   }
   return render(request, 'searchshop/index.html', context)

def search(request,  load_all=True, form_class=ModelSearchForm, searchqueryset=None):
   if request.GET.get('q'):
       form = form_class(request.GET, searchqueryset=searchqueryset, load_all=load_all)

       if form.is_valid():
           query = form.cleaned_data['q']
           results = form.search()
           context = {
               'query': query,
               'shop_list': results
           }
           return render(request, 'searchshop/index.html', context)
           # results = form.search()
       return HttpResponse(request.GET.get('q'))
   return HttpResponse('查詢')

配置路由

在 find/searchshop 創建 urls.py

from . import views
app_name = 'shop'   # 重點是這一行
urlpatterns = [
   path('', views.index, name='index'),
   path('search', views.search, name='search'),
   #  path(r'search/$', views.search, name='search')
]

修改 urls.py(目錄: find/find/urls.py)

from django.urls import path, include

urlpatterns = [
   path('shop', include('searchshop.urls')),
   path('admin/', admin.site.urls),
]

運行:

python manage.py runserver

測試

http://127.0.0.1:8000/shop


分詞器

所以'紅米'查詢不到…

到此這篇關于基于python + django + whoosh + jieba 分詞器實現站內檢索的文章就介紹到這了,更多相關python django 分詞器實現站內檢索內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python django使用haystack:全文檢索的框架(實例講解)
  • Python中使用haystack實現django全文檢索搜索引擎功能
  • python實現圖像檢索的三種(直方圖/OpenCV/哈希法)
  • python檢索特定內容的文本文件實例
  • Python基于正則表達式實現檢查文件內容的方法【文件檢索】

標簽:林芝 盤錦 海南 寧夏 漯河 大同 南平 普洱

巨人網絡通訊聲明:本文標題《基于python + django + whoosh + jieba 分詞器實現站內檢索功能》,本文關鍵詞  基于,python,django,whoosh,jieba,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于python + django + whoosh + jieba 分詞器實現站內檢索功能》相關的同類信息!
  • 本頁收集關于基于python + django + whoosh + jieba 分詞器實現站內檢索功能的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲一区二区三区美女| 久久亚洲精华国产精华液| 国产视频一区在线播放| 欧美午夜理伦三级在线观看| 欧美日韩国产小视频在线观看| 亚洲高清一区二区三区| 欧美不卡在线视频| 欧美成人一区二区三区片免费 | 国产专区综合网| 麻豆91精品视频| 美女脱光内衣内裤视频久久影院| 日日夜夜免费精品| 久久国产视频网| 久草这里只有精品视频| 国产一区二区三区精品欧美日韩一区二区三区 | 久久se这里有精品| 国产乱淫av一区二区三区| 国产精品一区二区黑丝| 成人综合婷婷国产精品久久| 99久久99久久精品免费观看| 欧美中文字幕亚洲一区二区va在线 | 天天综合日日夜夜精品| 美国十次综合导航| 国产一区高清在线| 成人少妇影院yyyy| 欧美怡红院视频| 欧美日韩三级视频| 欧美tickling挠脚心丨vk| 国产欧美日韩久久| 亚洲激情自拍视频| 天天综合色天天综合色h| 久久99国产精品成人| jlzzjlzz亚洲日本少妇| 欧美日本一区二区| 2023国产精品| 亚洲婷婷国产精品电影人久久| 亚洲午夜精品在线| 看电视剧不卡顿的网站| 成人黄色片在线观看| 欧美午夜精品理论片a级按摩| 91精品国产欧美一区二区18| 亚洲国产精品成人综合色在线婷婷 | 欧美激情中文字幕| 一区二区三区丝袜| 精品一区二区av| 欧美一二三四区在线| 久久久久久久久久久久久女国产乱| 亚洲欧洲国产日韩| 青青草原综合久久大伊人精品| 国产精品亚洲午夜一区二区三区| 91久久线看在观草草青青| 欧美一区二区在线看| 国产精品美女久久福利网站| 亚洲丝袜美腿综合| 久久99这里只有精品| 99re成人精品视频| 欧美日韩高清不卡| 久久久久久久久久久久久久久99 | 欧美亚洲综合色| 精品国产一区二区三区久久影院 | 日韩国产精品久久久久久亚洲| 国产精品中文欧美| 日本韩国欧美在线| 日韩欧美激情一区| 亚洲综合激情另类小说区| 国产 日韩 欧美大片| 欧美日韩精品系列| 99久久精品国产观看| 亚洲成人免费视频| www.色综合.com| 欧美本精品男人aⅴ天堂| 一区二区成人在线| 高清视频一区二区| 日韩欧美色综合| 亚洲精品一卡二卡| 国产91丝袜在线播放九色| 欧美国产精品久久| 一区二区在线免费| 日韩高清不卡一区| 欧美中文字幕一区二区三区亚洲| 亚洲国产精品99久久久久久久久| 免费人成精品欧美精品| 在线免费观看日韩欧美| 91精品国产日韩91久久久久久| 欧美日本视频在线| 一区二区三区日本| 99精品视频在线观看| 久久久久九九视频| 久久精品国产精品亚洲红杏 | 精品国产乱码91久久久久久网站| 亚洲最大成人网4388xx| 亚洲色图丝袜美腿| 成人91在线观看| 国产欧美日韩一区二区三区在线观看| 免费看日韩a级影片| 91麻豆精品国产91| 亚洲高清在线视频| 欧美午夜理伦三级在线观看| 亚洲自拍另类综合| 色婷婷久久99综合精品jk白丝| 久久久久久久久久久久久夜| 婷婷久久综合九色综合绿巨人 | 国产精品理论片在线观看| 国产成人午夜高潮毛片| 日本一区二区视频在线| 成人精品小蝌蚪| 1000精品久久久久久久久| 波多野结衣亚洲一区| 亚洲欧洲国产日韩| 在线观看成人免费视频| 亚洲成国产人片在线观看| 欧美色图激情小说| 奇米一区二区三区| 精品国偷自产国产一区| 国产·精品毛片| 亚洲欧洲日韩一区二区三区| 在线观看网站黄不卡| 亚洲国产欧美在线| 欧美丰满少妇xxxxx高潮对白| 日本午夜一区二区| www国产亚洲精品久久麻豆| 成人亚洲一区二区一| 亚洲女人的天堂| 欧美三级电影在线观看| 日本欧美大码aⅴ在线播放| 欧美一区二区三区四区在线观看| 激情小说亚洲一区| 国产欧美日韩三级| 99久久精品国产毛片| 亚洲电影在线免费观看| 欧美一区欧美二区| 大尺度一区二区| 亚洲美女电影在线| 欧美日韩视频在线观看一区二区三区| 婷婷中文字幕综合| 久久久99免费| 99亚偷拍自图区亚洲| 亚洲午夜久久久久中文字幕久| 欧美美女bb生活片| 精品一区二区三区欧美| 日韩一区中文字幕| 678五月天丁香亚洲综合网| 国产精品996| 亚洲国产精品久久久男人的天堂| 日韩欧美国产小视频| 91丨九色丨国产丨porny| 青青草原综合久久大伊人精品优势| 国产校园另类小说区| 欧美午夜免费电影| 国产精品99久久久| 天天综合色天天| 中文字幕欧美日本乱码一线二线| 欧美日韩国产一区二区三区地区| 国产一区二区三区美女| 亚洲伊人伊色伊影伊综合网| 欧美精品一区二区在线播放| 97aⅴ精品视频一二三区| 美女诱惑一区二区| 亚洲精品视频自拍| 久久久久久久久久久久久夜| 欧美私人免费视频| 成人激情视频网站| 麻豆免费看一区二区三区| 专区另类欧美日韩| 欧美精品一区二区三区很污很色的 | 亚洲午夜视频在线| 国产精品私人自拍| 欧美一区二区三区公司| 91美女在线视频| 国产乱码精品一区二区三区五月婷 | 国产黄色精品视频| 不卡av在线免费观看| 欧美色综合久久| 91精品欧美综合在线观看最新| 欧美一区二区三区四区高清| 久久综合av免费| 亚洲电影一区二区| 成人丝袜18视频在线观看| 欧美日韩亚洲综合| 国产精品美女久久久久久| 日本午夜一本久久久综合| 欧美三级电影网站| 国产永久精品大片wwwapp| 亚洲另类在线一区| 国产欧美1区2区3区| 日韩欧美激情四射| 欧美视频一区二区在线观看| av不卡免费在线观看| 国内久久精品视频| 视频一区二区国产| 亚洲视频中文字幕| 国产精品你懂的| 2022国产精品视频| 91精品中文字幕一区二区三区| 在线免费观看视频一区| 色女孩综合影院| 91影院在线观看| 成人app在线观看| 成人av网在线| 国产成人亚洲综合a∨猫咪|