日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:25日期:2022-08-06 16:46:23
基于 python django

源碼

前期準備

安裝庫:

pip install django-haystackpip install whooshpip 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 Shoppadmin.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 登錄剛才設置帳號,密碼即可進入:

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

搭建站內搜索

配置 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 indexesfrom .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方法,必須要有!# 返回這個modelreturn Shopp # 建立索引的數據 def index_queryset(self, using=None):# 這個方法返回什么內容,最終就會對那些方法建立索引,這里是對所有字段建立索引return self.get_model().objects.all()

生成檢索索引

python manage.py rebuild_index

項目目錄多出whoosh_index文件夾.

修改分詞器

從 pyrhon 安裝路徑 ( Libsite-packageshaystackbackendswhoosh_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/searchshoptemplatessearchindexessearchshop) 添加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 renderfrom django.http import HttpResponse#Create your views here.from .models import Shoppfrom haystack.forms import ModelSearchFormfrom haystack.query import EmptySearchQuerySetdef 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 viewsapp_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, includeurlpatterns = [ 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 + whoosh + jieba 分詞器實現站內檢索功能

分詞器

所以’紅米’查詢不到…

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

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

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产伦精品一区二区三区在线播放| 国产精品亚洲二区| 婷婷六月综合| 亚洲精品综合| 91视频一区| 久久av一区| 中文字幕成人| 久久国内精品自在自线400部| 日韩精品乱码av一区二区| 日韩中文字幕一区二区三区| 美女精品一区| 欧美一区91| 国产精品66| 国产成人精品免费视| 激情亚洲影院在线观看| 亚洲一级特黄| 亚洲欧洲一区二区天堂久久| 久久高清免费观看| 亚洲精品一级| 国产精品一线| 激情视频网站在线播放色| 999久久久精品国产| 国产一区二区高清| 日本精品另类| 国产一区二区三区久久久久久久久| 日本不卡免费高清视频在线| 欧美日韩激情在线一区二区三区| 久久国产精品亚洲77777| 日韩三级精品| 成人在线视频免费| 国产色综合网| 国产精品成人一区二区不卡| 午夜精品婷婷| 日本少妇一区| 香蕉久久国产| 久久99青青| 欧美13videosex性极品| 日韩专区欧美专区| 久久免费福利| 免费观看久久av| 亚洲精选91| аⅴ资源天堂资源库在线| 国产一区成人| 国产精品久久久久9999高清| 国产99精品一区| 日韩av中文在线观看| 日韩电影免费在线观看| 久久午夜精品一区二区| 久久一区国产| 国产女优一区| 精品国产一区二区三区噜噜噜| 性欧美69xoxoxoxo| 国产精品毛片aⅴ一区二区三区| 久久精品主播| 日韩高清三区| 精品三级久久| 欧美日韩黄网站| 婷婷成人在线| 免费看久久久| 中文字幕中文字幕精品| 在线看片国产福利你懂的| 日韩精品视频在线看| 欧美日韩中文一区二区| 国产精品va| 久久都是精品| 免费观看亚洲| 国产亚洲一区二区三区不卡| 2023国产精品久久久精品双| 精品视频高潮| 日韩亚洲精品在线观看| 日本在线高清| 日本精品另类| 亚洲自拍另类| 久久久久99| 久久中文在线| 日本强好片久久久久久aaa| 激情五月色综合国产精品| 国产专区精品| 欧美午夜三级| 亚洲影视一区二区三区| 精品在线91| 欧美精品高清| 久久精品网址| 欧美在线首页| 天堂久久av| 九一精品国产| 秋霞国产精品| 中文字幕在线看片| 国产精品久久| 日韩不卡在线观看日韩不卡视频| 视频在线观看一区二区三区| 99久久久久国产精品| 激情综合婷婷| 欧美1区2区3| 国产精品日本一区二区不卡视频 | 欧美精品99| 亚洲欧美日本国产| 黄色av日韩| 午夜国产精品视频| 国产专区一区| 99久精品视频在线观看视频| 日韩av自拍| 精品一区二区三区在线观看视频| 国产乱码精品一区二区三区四区| 亚洲精品国产日韩| 中文字幕日韩欧美精品高清在线| 在线亚洲成人| 在线一区电影| 性欧美xxxx免费岛国不卡电影| 色婷婷亚洲mv天堂mv在影片| 久久伊人国产| 美女精品久久| 久久久久九九精品影院| 国产精品久久久久久久久久白浆| 日韩av成人高清| 欧美天堂一区二区| 91九色综合| 91亚洲精品在看在线观看高清| 日本欧美一区| 国产精品视频一区二区三区四蜜臂 | 久久av免费看| 亚洲国产福利| 国产亚洲亚洲| 国产欧美日韩精品高清二区综合区| 国产一区二区亚洲| 亚洲精品电影| 青草久久视频| 在线一区av| 美女精品一区| 蜜桃精品视频| 激情婷婷久久| 午夜精品福利影院| 国产伦理一区| 久久精品国产亚洲夜色av网站| 国产精品普通话对白| 欧美视频久久| 99视频精品| 国产精品久久久久av电视剧| 久久精品99久久无色码中文字幕| 不卡在线一区二区| 石原莉奈在线亚洲三区| 日韩1区2区日韩1区2区| 欧美国产另类| 欧美香蕉视频| 9色精品在线| 亚久久调教视频| 国产精品久久久久av蜜臀| 国产精品一区二区三区美女 | 日韩成人在线看| 久久99偷拍| 青青青免费在线视频| 极品日韩av| 深夜福利一区| 鲁大师精品99久久久| 日韩在线短视频| 在线亚洲自拍| 国产日韩亚洲| 日本精品影院| 亚洲毛片在线免费| 日韩av不卡在线观看| 国产一区二区三区四区| 99久久99久久精品国产片果冰| 蜜臀久久99精品久久久画质超高清| 日本成人在线不卡视频| 国产精品二区不卡| 久久av一区二区三区| 欧美成人精品午夜一区二区| 亚洲午夜视频| 国产一精品一av一免费爽爽| 欧美日韩尤物久久| 日本一区二区三区中文字幕| 麻豆mv在线观看| 视频一区二区欧美| 精品淫伦v久久水蜜桃| 色爱av综合网| 五月亚洲婷婷 | 欧美在线黄色| 999久久久精品国产| 日本91福利区| 99久久久久| 国产视频一区二区在线播放| 久久国产小视频| 欧美午夜网站| 午夜国产一区二区| 久久一区精品| 综合干狼人综合首页| 精品国产一区二| 免费在线观看日韩欧美| 欧美国产一级| 日本成人在线网站| 国产91精品对白在线播放| **爰片久久毛片| 亚洲女同中文字幕| 国内一区二区三区| 亚洲精品一级| 在线日韩欧美| 久久97久久97精品免视看秋霞| 美女精品网站| 久久久国产亚洲精品| 国产精品久久久久久久久久久久久久久|