1. 使用全文搜尋框架django-haystack
2. 使用搜尋引擎whoosh
3. 安裝
pip install django-haystack
pip install whoosh
4. 配置
settings.py中
# 全文檢索框架配置haystack_connections =
}# 當新增,修改,刪除資料時,自動生成索引
haystack_signal_processor = 'haystack.signals.realtimesignalprocessor'
5. 檔案生成
2. 在templates下面建立資料夾templates/search/indexes/goods/goodssku_text.txt,寫入以下內容
#指定根據表中的哪些字段建立索引資料
#} ,接受跨表欄位名
} #
根據商品的名稱建立索引
} #
根據商品的簡介建立索引
} #
根據商品的詳情建立索引
3. 環境終端執行python manage.py rebuild_index. 此時就會生成乙個新資料夾,可以嘗試
6. 使用全文檢索
1. 前端頁面提交表單到乙個url中進行處理,建議url設定為/search
get請求,請求位址為/searchclass="
search_con fl
">
2. 配置url
固定寫法,當有請求傳送過來是,交給haystack.urls進行處理urlpatterns =[
url(r
'^admin/
', admin.site.urls),
url(r
'^tinymce/
', include('
tinymce.urls
')),
url(r
'^search
', include('
haystack.urls
')), # 加入這一行
...]
3. 請求的返回結果
當請求傳達給haystack後,haystack會把搜尋出的結果傳遞給templates/search下的search.html(需要手動建立)①傳遞的上下文包括:
1)query:搜尋關鍵字
2)page: 當前頁的page物件-->遍歷page物件,獲取到的是searchresult類的例項物件,物件的屬性object才是模型類的物件
3)paginator:分頁paginator物件,
4)通過在settings.py中設定haystack_search_results_per_page = 1 可
以控制每頁顯示數量
7. 前端顯示(這裡還沒有弄明白)
class="pagenation
">
"/search?q=}&page=}
"/search?q=}&page=}
"class="
active
">}
"/search?q=}&page=}
">}
"/search?q=}&page=}
8. 使用jieba分詞,效果比haystark預設的要好很多
pip install jiebafrom jieba.analyse import chineseanalyzer #在頂部新增#然後在資料夾/python路徑/lib/python2.7.5/site-packages/haystack/backends/whoosh_backend.py ,
將裡面的whoosh_backend.py複製乙份還在此資料夾下,改名為whoosh_cn_backend.py,並修改兩行**
schema_fields[field_class.index_fieldname] = text(stored=true, analyzer=chineseanalyzer(),field_boost=field_class.boost, sortable=true) #找到這個然後修改,大概在160行
# 然後在settings.py中修改配置
# 全文檢索框架配置haystack_connections =
}
具體參考:
django全文搜尋
麻雀雖小,搜尋引擎還是不能少的,要不然每次都得去資料庫匹配,django通過haystack搜尋框架可以很容易實現乙個搜尋功能的,whoosh採用的python編寫,效能一般但足夠用,這裡就用這個,開始部署 先安裝pip install whoosh django haystack jieba wh...
Django新增全文搜尋功能入門篇
blog 此models.py的內容假設如下 from django.db import models from django.contrib.auth.models import user class note models.model user models.foreignkey user pu...
mysql全文搜尋功能
一 語法 match col1,col2,against expr search modifier search modifier 二 mysql支援全文索引和搜尋 1 全文索引在mysql裡面索引型別是 fulltext 2 全文索引只能用在innodb或者 myisam儲存引起的表中,並且只能在...