haystack為django提供了模組化的搜尋。它的特點是統一的,熟悉的api,可以讓你在不修改**的情況下使用不同的搜尋後端(比如 solr, elasticsearch, whoosh, xapian 等等)。
drf-haystack是為了在rest framework中使用haystack而進行的封裝(如果在django中使用haystack,則安裝django-haystack即可)。
settings.py
# haystack
haystack_connections = }}}
檢視class skusearchview(haystackviewset): 繼承自haystackviewset
index_models = [sku] 指明索引模型類,注意 中括號
serializer_class = skusearchserializer
pagination_class = pagenum分頁器類
序列化器
from rest_framework import serializers
from drf_haystack.serializers import haystackserializer
from goods.models import sku
from goods.search_indexes import skuindex
class skusserializers(serializers.modelserializer):
class meta:
model = sku
fields = '__all__'
class skusearchserializer(haystackserializer): 繼承自haystack的序列化器類
object = skusserializers(read_only=true)
class meta:
index_classes=[skuindex]
fields=('text','object')
搜尋檢視使用skusearchserializer序列化器來檢查前端輸入的引數text,並且檢索出資料後使用這序列化器返回給前端。
skusearchserializer 序列化器中的object欄位使用來向前端返回資料時序列化的字段,
我們可以通過宣告搜尋結果的object欄位以skuserializer序列化的形式進行處理,明確要返回的搜尋結果中每個資料物件包含哪些字段。
ES實現搜素建議
幫助 戶在搜尋的過程,對輸入中進行糾錯,提示建議性詞語。例如 輸 的 本分解為 token,然後在索引的字典裡查詢相似的 term 並返回。missing 如索引中已經存在,就不提供建議 popular 推薦出現頻率更加 的詞 always 論是否存在,都提供建議 預設按照 score 排序,也可以...
ES6 模糊查詢(不區分大小寫)
使用es6的filter方法和tolowercase 方法實現了不區分大小寫的自動補全 如下 let list aaaassss bbbbffff cccciiii ddddvvvv let str ddddvv let filterlist list.filter item item.tolowe...
SpringBoot實現ES簡單搜尋和推薦
es高階客戶端 public resthighlevelclient resthighlevelclient public list query add the list data.add sourcemap catch ioexception e return data title的型別是 typ...