亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Vue 3 全文搜索方案選型與性能對比實戰(zhàn)

Vue 3 全文搜索方案選型與性能對比實戰(zhàn) 全文搜索這功能聽著簡單真正踩進去才知道水有多深。尤其是在 Vue 3 項目里數(shù)據(jù)量一旦過萬一個簡單的filter就能讓你在輸入框里每敲一個字就卡一下。過去半年我在做內(nèi)部知識庫和商品中臺搜索先后對比了四種主流做法原生filter線性掃描、Fuse.js 模糊搜索、MiniSearch 全文檢索引擎、后端搜索服務以 Meilisearch 為例。從性能、體驗、維護成本三個角度折騰了一輪今天把四套方案的實現(xiàn)思路、測量要點、踩坑記錄都整理出來給正準備在 Vue 3 里做全文搜索的朋友一個可以參考的選型清單。這套對比的思路不限于某一個業(yè)務知識庫、商品搜索、日志檢索、文檔站都可以套用。1. 四種搜索方案我在什么樣的情況下才會選它搜索方案選型不能光看“能不能搜到”還要看數(shù)據(jù)量、部署成本、團隊維護能力。我把整個決策拆成四個層次純前端原生掃描、前端模糊匹配庫、前端全文索引庫、后端搜索引擎。每往上一層搜索能力更強、規(guī)模上限更高但引入的依賴、部署的復雜度也同步上升。1.1 方案一原生 filter 線性掃描原理是把數(shù)組整個過一遍用includes、indexOf或者正則去匹配字符串。這是最簡單也最容易想到的方案零依賴、零構(gòu)建、零學習成本。它適合什么場景我見過很多后臺管理系統(tǒng)的搜索框比如用戶列表按姓名過濾、訂單列表按訂單號過濾這種字段值短、數(shù)據(jù)量幾百到幾千條的場景直接filter完全夠用。還有一個隱含優(yōu)勢它是響應式的computed里寫一句就能聯(lián)動視圖前端新手也能馬上上手。但它的瓶頸非常明顯。一是時間復雜度和數(shù)據(jù)量線性相關(guān)數(shù)據(jù)量從五千漲到五萬、十萬搜索耗時跟著線性漲。二是匹配策略太粗糙includes只能做子串匹配想做大小寫不敏感、忽略標點、按空格劃分多個關(guān)鍵詞全部要自己處理。三是沒有“相關(guān)性”概念結(jié)果順序要么是原始順序要么得手動按某個字段排序。超過一定數(shù)據(jù)量之后它就不是“夠用”而是“硬撐”。1.2 方案二Fuse.js 模糊搜索Fuse.js 解決的核心痛點是“用戶記不住準確關(guān)鍵詞”。它基于編輯距離算法做模糊匹配即使關(guān)鍵詞寫錯一兩個字也能把候選結(jié)果撈出來。實際體驗上這個“容錯”能力特別適合搜索和程序員相關(guān)的技術(shù)名詞比如用戶想搜“Vue 3”卻打成“Vus 3”Fuse.js 能根據(jù)字母相似度匹配到對應結(jié)果。它自帶了權(quán)重系統(tǒng)可以指定標題字段權(quán)重更高、正文字段權(quán)重更低也能返回匹配位置、匹配片段前端拿來做高亮很方便。代價是包體積相對較大gzip 后約 20KB 左右而且模糊匹配本身的計算開銷不小數(shù)據(jù)量越大單次查詢越慢。Fuse.js 提供了createIndex預建索引的能力但只能加速候選篩選匹配計算仍然躲不掉。實測下來一萬條數(shù)據(jù)時帶索引查詢在 40-70ms 左右能接受但到五萬條會明顯吃力。1.3 方案三MiniSearch 全文檢索引擎MiniSearch 走的是和 Fuse.js 完全不同的路子。它在內(nèi)存里構(gòu)建倒排索引把文本拆成 token每個 token 映射到一批文檔。查詢時直接根據(jù) token 取文檔集合而不是逐條掃描。加上內(nèi)置了 BM25 相關(guān)度評分結(jié)果天然按“最相關(guān)”排序體驗非常接近后端搜索引擎。它對中文場景的適配也比想象中好支持自定義tokenize函數(shù)能用分詞器把中文切成詞或詞組再建索引。和 Fuse.js 對比MiniSearch 強在數(shù)據(jù)量越大優(yōu)勢越明顯五萬條、十萬條數(shù)據(jù)查詢也在毫秒級而且包體積小gzip 后通常在幾 KB 到十幾 KB 之間。缺點是它需要管理索引生命周期數(shù)據(jù)新增、修改、刪除時都得調(diào)用對應 API 維護索引比單純filter復雜一些。1.4 方案四后端搜索服務HTTP API當數(shù)據(jù)量到百萬級或者需要多租戶權(quán)限過濾、同義詞擴展、實時同步數(shù)據(jù)庫等能力時純前端方案就扛不住了。此時把搜索拆成獨立的服務前端只負責發(fā)請求和渲染結(jié)果。最常見的后端方案是 Elasticsearch、Meilisearch、Typesense體驗和性能都很強。代價也很明確需要額外部署和維護服務前端要處理接口延遲、loading、錯誤態(tài)、請求競態(tài)。如果是個人項目或小型團隊后端運維成本可能比前端開發(fā)成本還高。所以我的原則是“能用前端解決就別上后端”除非數(shù)據(jù)規(guī)模真的到了前端撐不住的程度。四種方案的定位差異可以看這個表方案搜索能力建議數(shù)據(jù)規(guī)模前端包體積增量維護成本原生 filter子串匹配 5000 條0最低Fuse.js模糊匹配 1 萬條約 20KB低MiniSearch全文索引 BM25 50 萬條約 10KB中后端搜索服務分布式全文檢索百萬級以上極小高2. 性能基準測試一萬到十萬條數(shù)據(jù)誰扛得住講完原理上一波實測數(shù)據(jù)。先說環(huán)境生產(chǎn)構(gòu)建版本 Vite Vue 3.4Chrome 120MacBook Pro M1。數(shù)據(jù)是隨機生成的 5 萬條商品數(shù)據(jù)包含標題10-30 字、分類名、描述100-300 字。這個量級很接近真實的知識庫、商品庫場景。測量方式上所有耗時都用performance.now()在搜索函數(shù)外層計算并且強制瀏覽器完成渲染后才取下一輪數(shù)據(jù)避免把異步渲染時間誤算進搜索結(jié)果里。2.1 構(gòu)建索引耗時與包體積這一輪只測“進入頁面到可以搜索”的初始化成本。原生filter沒有建索引的概念隨便搜Fuse.js 一次性把全量文本讀進內(nèi)存做預處理MiniSearch 需要調(diào)用addAll批量建倒排索引后端方案把建索引的耗時轉(zhuǎn)移到了服務端前端只關(guān)心接口是否可用。我實測的數(shù)據(jù)如下方案構(gòu)建索引耗時前端包體積增量gzip原生 filter0ms0KBFuse.js含 createIndex約 320ms約 21KBMiniSearch約 410ms約 8KBMeilisearch API服務端處理約 1KB結(jié)論很清楚除了原生掃描其余方案首次進入都有毫秒級到幾百毫秒不等的索引構(gòu)建時間。好消息是這些構(gòu)建都只發(fā)生在數(shù)據(jù)加載或數(shù)據(jù)更新時不會持續(xù)卡用戶。如果頁面數(shù)據(jù)本身很大建議用requestIdleCallback或setTimeout分片構(gòu)建索引避免阻塞首屏渲染。2.2 查詢延遲實測P50/P95查詢延遲是最核心的指標。我模擬了連續(xù)輸入關(guān)鍵詞的場景對每個方案在 1 萬條、5 萬條數(shù)據(jù)下分別測了 100 次查詢?nèi)?P50 和 P95。這里只統(tǒng)計純查詢時間不包含防抖等待和渲染時間。方案1 萬條 P501 萬條 P955 萬條 P505 萬條 P95原生 filter8ms15ms38ms62msFuse.js未建索引30ms50ms150ms220msFuse.jscreateIndex18ms35ms70ms120msMiniSearch1ms3ms2ms6msMeilisearch API35ms70ms48ms85ms這個表格能看出很多問題。原生filter在 1 萬條時還挺快到了 5 萬條 P95 就有 60ms 以上配合每敲一個字就觸發(fā)查詢的交互設計用戶體感就是“卡”。Fuse.js 雖然有模糊匹配能力但在 5 萬條時掉到 120-220ms已經(jīng)明顯影響輸入體驗。MiniSearch 是唯一一個在 5 萬條下依然維持在毫秒級的純前端方案。Meilisearch 的延遲主要在網(wǎng)絡 RTT所以數(shù)據(jù)量變化影響反而不大。2.3 內(nèi)存占用與長期運行穩(wěn)定性內(nèi)存這塊我單獨提一下因為很多開發(fā)者只看搜索耗時而忽略內(nèi)存泄漏。我打開 Chrome DevTools 的 Memory 面板記錄每種方案在完成 5 萬條索引構(gòu)建后的“保留內(nèi)存”變化。原生filter和 Fuse.js不建索引幾乎沒有額外內(nèi)存占用。Fuse.js 使用createIndex后5 萬條數(shù)據(jù)大約多占用 30-50MB 內(nèi)存。MiniSearch 的倒排索引會保留詞項到文檔的映射同樣數(shù)據(jù)集下大概占用 40-60MB。后端方案前端內(nèi)存占用最小但服務端要吃資源。更重要的是如果用戶在搜索期間頻繁輸入、反復觸發(fā)索引重建內(nèi)存可能只增不減。Vue 的響應式系統(tǒng)會額外放大這個問題——把大數(shù)組放進reactive后每次改動都觸發(fā)依賴收集和重渲染。我后來的做法是大列表用shallowRef甚至普通變量維護只有最終展示給用戶的結(jié)果集才放進ref這一步能省掉大量無意義的響應式代理開銷。3. 四種方案在 Vue 3 里的完整接入實現(xiàn)方案選型只是第一步落地才是考驗。這一節(jié)把四個方案的 Vue 3 接入代碼寫出來包含我自己常用的封裝方式兼容 Options API 和 Composition API 的讀者都能看懂。3.1 原生 filter 接入computed 驅(qū)動的搜索原生方案的核心是用computed緩存搜索結(jié)果避免每次渲染都重新過濾。搜索關(guān)鍵詞用一個ref維護配合watch或輸入框的v-model同步。// useLocalSearch.js import { ref, computed } from vue export function useLocalSearch(list, searchFields [title, content]) { const keyword ref() const results computed(() { const kw keyword.value.trim().toLowerCase() if (!kw) return list.value return list.value.filter((item) { return searchFields.some((field) { const value item[field] return value ! null String(value).toLowerCase().includes(kw) }) }) }) return { keyword, results } }這里有個關(guān)鍵細節(jié)computed的緩存依賴是keyword.value和list.value順序很重要。如果在組件里對list做了額外過濾比如“只顯示上架商品”一定要先處理完業(yè)務過濾再傳入useLocalSearch否則搜索結(jié)果可能出現(xiàn)“被過濾掉的商品仍然命中”的 bug。我通常在組件里這樣用script setup import { useLocalSearch } from ./useLocalSearch import { goodsList } from ./api/goods const { keyword, results } useLocalSearch(goodsList, [title, category]) /script template input v-modelkeyword placeholder搜索商品名稱或分類 / ul li v-foritem in results :keyitem.id{{ item.title }}/li /ul /template這個方案唯一要防的是重復渲染。computed已經(jīng)能擋住大多數(shù)無效計算但如果搜索結(jié)果依然是一個很大的數(shù)組建議在模板里配合v-memo或在渲染列表時加上分頁/虛擬滾動避免一次性渲染幾千個節(jié)點。3.2 Fuse.js 接入權(quán)重、閾值和防抖聯(lián)動Fuse.js 的核心配置是threshold和keys。threshold控制模糊匹配的寬容度取值范圍 0 到 10 表示完全精確1 表示任意匹配。我常用的值是 0.4容錯和準確率的平衡點。// useFuseSearch.js import Fuse from fuse.js import { ref, watch, shallowRef } from vue import { debounce } from lodash-es export function useFuseSearch(list, options {}) { const keyword ref() const results ref([]) const fuse shallowRef(null) const buildIndex () { fuse.value new Fuse(list.value, { keys: [title, content], threshold: 0.4, ignoreLocation: true, minMatchCharLength: 2, includeMatches: true, includeScore: true, useExtendedSearch: true, ...options, }) } watch(list, buildIndex, { immediate: true }) const runSearch debounce((kw) { if (!kw.trim()) { results.value list.value return } results.value fuse.value.search(kw).map((r) r.item) }, 200) watch(keyword, (kw) runSearch(kw)) return { keyword, results } }幾個容易踩的坑ignoreLocation: true很重要。默認 Fuse.js 會考慮關(guān)鍵詞在文本中的位置開啟后不再因為關(guān)鍵詞出現(xiàn)在靠后位置而懲罰分數(shù)對于全文搜索更合理。minMatchCharLength: 2避免了用戶輸入一個字符時匹配出一大堆無關(guān)結(jié)果。includeMatches打開后可以在結(jié)果對象里拿到匹配位置數(shù)組做高亮方便。但注意我上面的寫法把r.item返回出去了如果需要匹配片段得改成返回整個r。Fuse.js 的createIndex預建索引用法是在初始化時傳入new Fuse(list, { ..., useExtendedSearch: true })后調(diào)用fuse.setCollection或者直接用Fuse.createIndex(keys, list)把序列化索引存入內(nèi)存。這個索引能顯著減少候選文檔數(shù)量但計算量仍然不小數(shù)據(jù)超過一萬條后建議優(yōu)先考慮 MiniSearch。3.3 MiniSearch 接入倒排索引的構(gòu)建、查詢與增量更新MiniSearch 的接入流程分三步初始化、建索引、搜索。它和 Fuse.js 最大的不同是“先建索引再搜”所以數(shù)據(jù)更新時必須同步維護索引。// useMiniSearch.js import MiniSearch from minisearch import { ref, shallowRef, watch } from vue export function useMiniSearch(list, options {}) { const keyword ref() const results ref([]) const searchIndex shallowRef(null) const initIndex () { const mini new MiniSearch({ fields: [title, content], storeFields: [title, content, category, updatedAt], searchOptions: { boost: { title: 2, content: 1 }, prefix: true, fuzzy: 0.2, }, ...options, }) mini.addAll(list.value) searchIndex.value mini } watch(list, initIndex, { immediate: true }) watch(keyword, (kw) { if (!searchIndex.value) return if (!kw.trim()) { results.value list.value return } results.value searchIndex.value.search(kw, { combineWith: AND }) }) return { keyword, results } }這里searchOptions.boost設置了標題字段的權(quán)重是正文字段的兩倍搜索排序會優(yōu)先展示標題命中的內(nèi)容。prefix: true開啟前綴匹配用戶輸入“手機會”也能匹配到“手機配件、手機支架”等以“手機”開頭的結(jié)果。fuzzy: 0.2允許極小的拼寫誤差。增量更新是 MiniSearch 使用者的必修課。新增文檔用add刪除用discard修改就是先discard再add。如果不做增量更新而是一口氣調(diào)用addAll重建全量索引五萬條數(shù)據(jù)的構(gòu)建時間就會在每次數(shù)據(jù)變更時重復出現(xiàn)界面明顯卡頓。一個從實踐中得到的建議MiniSearch 的search返回的是文檔 ID 加權(quán)重分數(shù)如果你只需要結(jié)果列表不要map成完整文檔對象直接讓results.value持有 MiniSearch 返回的格式渲染時再關(guān)聯(lián)查原始數(shù)據(jù)。這樣可以省下大量對象拷貝。3.4 后端搜索 API 接入請求競態(tài)與 loading 處理接入后端搜索前端代碼反而更簡單但多了一個必須處理的并發(fā)問題用戶快速輸入時舊請求的響應可能比新請求晚到導致結(jié)果閃爍或錯誤覆蓋。解決辦法是給請求加“序列號”只接受最新一次請求的響應。// useRemoteSearch.js import { ref, watch } from vue import { debounce } from lodash-es export function useRemoteSearch(searchFn, { delay 300 } {}) { const keyword ref() const results ref([]) const loading ref(false) const error ref(null) let requestSeq 0 watch( keyword, debounce(async (kw) { const currentSeq requestSeq loading.value true error.value null try { const data await searchFn(kw) if (currentSeq ! requestSeq) return results.value data } catch (e) { if (currentSeq ! requestSeq) return error.value e } finally { if (currentSeq requestSeq) { loading.value false } } }, delay) ) return { keyword, results, loading, error } }requestSeq這個變量就是競態(tài)處理的鑰匙。每次請求前自增一次響應回來后對比當前的requestSeq如果不是最新的就直接丟棄。這個方法比AbortController更輕量因為AbortController在取消請求時會在某些瀏覽器里拋異常而序列號方案不會產(chǎn)生額外的錯誤日志。后端接口的返回結(jié)構(gòu)建議統(tǒng)一成{ hits: [], total: number }前端拿到total做分頁或“共 N 條結(jié)果”的提示比在結(jié)果數(shù)組上length更準確。4. 體驗細節(jié)高亮、分詞、渲染與排序性能數(shù)據(jù)只是地基用戶真正感知到的是交互體驗。很多人測試時只關(guān)注“能不能搜出來”忽略了搜索框本身的設計。這一節(jié)聊幾個我在實際項目里打磨過的細節(jié)每一項都對最終體驗有實打?qū)嵉挠绊憽?.1 輸入防抖、最小字符數(shù)與空狀態(tài)設計搜索輸入框最常見的錯誤是“每敲一個字符都觸發(fā)一次搜索”。即使 MiniSearch 查詢只要幾毫秒渲染層和響應式更新也可能讓低端手機掉幀。我的統(tǒng)一做法是加 200-300ms 的防抖同時限制至少輸入 2 個字符才發(fā)起搜索避免用戶輸入單個字母時頁面陷入“什么都沒輸入但結(jié)果已經(jīng)變了”的混亂。空狀態(tài)設計也很重要。關(guān)鍵詞為空時通常展示全部數(shù)據(jù)或熱門推薦搜索無結(jié)果時展示友好的提示和“清空搜索”按鈕。我習慣在組件里同時維護兩個狀態(tài)results搜索結(jié)果和isSearching是否為搜索模式而不是讓組件傻傻地把空數(shù)組渲染成空白頁。防抖在 Vue 里要注意一個坑debounce的函數(shù)如果直接包裝watch回調(diào)會導致watch的immediate失效。如果需要在初始化時執(zhí)行一次搜索別依賴防抖單獨調(diào)用一次搜索函數(shù)即可。4.2 搜索結(jié)果高亮的正確寫法高亮最常見的實現(xiàn)是用v-html直接把帶mark標簽的字符串渲染出來。這個寫法有 XSS 風險而且容易被用戶輸入的特殊字符打斷正則。安全的做法分兩步先轉(zhuǎn)義 HTML再在轉(zhuǎn)義后的文本里做關(guān)鍵詞高亮。function escapeHtml(str) { return String(str) .replace(//g, amp;) .replace(//g, lt;) .replace(//g, gt;) .replace(//g, quot;) .replace(//g, #39;) } function escapeRegExp(str) { return String(str).replace(/[.*?^${}()|[\]\\]/g, \\$) } function highlight(text, keyword) { const safeText escapeHtml(text) const words keyword.trim().split(/\s/).filter(Boolean) if (!words.length) return safeText const pattern words.map((w) escapeRegExp(escapeHtml(w))).join(|) return safeText.replace(new RegExp((${pattern}), gi), mark$1/mark) }這個函數(shù)的關(guān)鍵是escapeRegExp必須先于escapeHtml處理否則用戶輸入(、)、$等特殊字符會讓正則報錯。模板里直接span v-htmlhighlight(item.title, keyword)/span注意高亮的粒度不要過細。有的開發(fā)者會把每個字符都包一個mark結(jié)果整個標題變成一整片黃色視覺上非常難看。更合理的做法是對每個關(guān)鍵詞整體高亮不同關(guān)鍵詞之間可以繼續(xù)累積。4.3 中文分詞的坑和應對中文搜索和英文搜索完全不是一回事。英文按空格自然分詞中文的“我是一個前端工程師”是一整串連續(xù)字符。如果你直接用split( )分詞中文文本根本不會分。這個問題的連鎖反應是搜索“前端”時包含“我是一個前端工程師”的文檔可以匹配但搜索“前端工程”時由于文檔里沒有完全相同的子串純includes或 MiniSearch 默認分詞就匹配不到。最簡單的應對是使用Intl.Segmenter這是瀏覽器原生支持的中文分詞 APIconst segmenter new Intl.Segmenter(zh, { granularity: word }) function tokenize(text) { return [...segmenter.segment(text)] .map((seg) seg.segment) .filter((word) word.trim().length 1) }放到 MiniSearch 里就是自定義tokenizeconst searchIndex new MiniSearch({ fields: [title, content], tokenize, searchOptions: { combineWith: AND }, })這里我踩過兩個大坑一是Intl.Segmenter在現(xiàn)代瀏覽器都支持但在低版本 WebView 里可能是 undefined建議做降級處理比如回退到text.match(/[\u4e00-\u9fa5]|[a-zA-Z0-9]/g)這種簡單的正則切詞。二是分詞器開銷不小如果數(shù)據(jù)量大盡量在索引構(gòu)建階段完成分詞不要每次搜索時都分詞。4.4 大列表渲染優(yōu)化從全量渲染到虛擬列表搜索結(jié)果幾十條還好如果是全文搜索返回幾千條匹配結(jié)果也正常。此時直接v-for渲染全量列表DOM 節(jié)點數(shù)可能破萬低端設備立刻白屏或長時間無響應。我嘗試過兩個優(yōu)化方案。最直接的是“截斷顯示”只顯示前 50 條或前 100 條底部加“加載更多”按鈕。這個方案適合大多數(shù)業(yè)務場景尤其是列表本身有分頁邏輯時。另一個是虛擬列表核心思想是只渲染可視區(qū)域內(nèi)的元素滾到哪渲染到哪。Vue 3 生態(tài)里vue-virtual-scroller、tanstack/vue-virtual都比較好用。我用tanstack/vue-virtual寫過一版商品搜索列表關(guān)鍵代碼是這樣script setup import { useVirtualizer } from tanstack/vue-virtual const parentRef ref(null) const virtualizer useVirtualizer({ count: results.value.length, getScrollElement: () parentRef.value, estimateSize: () 60, overscan: 10, }) /script template div refparentRef classscroll-area styleheight: 600px; overflow: auto div :style{ height: virtualizer.getTotalSize() px } div v-foritem in virtualizer.getVirtualItems() :keyitem.key :style{ position: absolute, top: 0, left: 0, width: 100%, transform: translateY(${item.start}px), } {{ results[item.index].title }} /div /div /div /template虛擬列表適合結(jié)果集很大且需要滾動查看的場景。但要注意虛擬列表的內(nèi)部狀態(tài)和搜索結(jié)果是耦合的。搜索關(guān)鍵詞變化時虛擬列表需要回到頂部否則視覺上會出現(xiàn)用戶停留在列表中間、結(jié)果已經(jīng)刷新但滾動位置沒變的怪異現(xiàn)象。5. 常見問題與排查技巧實錄每個做過搜索功能的人都遇到過類似的問題搜索“卡成狗”、中文搜不到、請求亂序覆蓋、內(nèi)存持續(xù)上漲。這些問題往往不是搜不到結(jié)果而是細節(jié)處理不到位。我把實操中遇到的典型問題記錄在這里每個都給出了排查思路和解決建議。5.1 搜索越來越慢索引過期與內(nèi)存泄漏癥狀是剛進入頁面搜索很快幾分鐘后越來越慢最后幾乎卡死。常見原因有三個第一搜索數(shù)據(jù)被放進了reactive。Vue 的響應式系統(tǒng)會遞歸代理整個對象數(shù)組搜索時每次訪問字段都會觸發(fā)依賴收集。數(shù)據(jù)量一大這個開銷遠超搜索本身。排查方式是看 Chrome DevTools 的 Performance 面板里是不是大量時間花在Track Operations上。解決辦法是把大數(shù)組換成shallowRef或普通變量只用響應式數(shù)據(jù)保存keyword和最終的results。第二搜索內(nèi)部緩存了過多的歷史查詢結(jié)果。比如每次輸入都生成一個新的搜索結(jié)果數(shù)組但舊數(shù)組沒有被釋放。排查方式是打開 Memory 面板拍幾次 heap snapshot看Array或Object的數(shù)量是否持續(xù)增長。解決方法是保證results.value每次都被重新賦值而不是push進已有數(shù)組。第三Fuse.js 或 MiniSearch 在數(shù)據(jù)更新時直接重建整個索引。如果數(shù)據(jù)量很大重建索引的時間會指數(shù)級上漲。MiniSearch 必須走discardadd的增量更新Fuse.js 則盡量少地調(diào)用setCollection。5.2 中文搜不到分詞器才是元兇我遇到過最典型的場景是搜索“vue”能匹配“vue3”也能匹配搜索“前端開發(fā)”就什么都搜不到。原因是默認分詞器把“前端開發(fā)”當作一個完整 token 存進索引用戶輸入“前端開發(fā)”時理論上能匹配到完全相同的 token但如果用戶輸入的是“前端開”或“前端”索引里沒有對應 token自然搜不到。解決辦法就是 4.3 里提到的自定義tokenize用Intl.Segmenter或正則把中文切得更細。分詞粒度也要平衡切太細每個字一個 token會導致搜索結(jié)果過多、噪聲大切太粗整句一個 token又會導致查不全。我實踐下來按詞切分、過濾單字和停用詞是相對穩(wěn)妥的選擇。5.3 接口競態(tài)最后一條響應不一定是最后一次請求后端搜索服務最常見的體驗問題是“搜索了 A 詞又馬上搜索 B 詞頁面先顯示 B 的結(jié)果再閃回 A 的結(jié)果”。這是典型的請求競態(tài)。低速網(wǎng)絡或異步任務多時更容易出現(xiàn)。解決方式在 3.4 已經(jīng)寫過用請求序列號或AbortController都行。我推薦序列號方案因為它不受瀏覽器兼容性影響也不用處理AbortError。要注意的是序列號不能放在組件內(nèi)部應該放到useRemoteSearch的閉包里確保每個搜索實例有獨立狀態(tài)。5.4 選型決策速查表最后整理一張速查表可以直接貼在項目文檔里判斷條件推薦方案數(shù)據(jù)量 5000需求只是按字段過濾原生 filter字段少用戶可能拼錯詞需要容錯Fuse.js數(shù)據(jù)量 5 千到 50 萬全文檢索為主MiniSearch數(shù)據(jù)量百萬以上需要多租戶/權(quán)限過濾后端搜索服務Meilisearch/ES團隊無后端運維人力純前端項目MiniSearch已有后端搜索服務前端只是展示層調(diào)用 API 封裝請求這個表不是死規(guī)矩。如果你的項目數(shù)據(jù)量小但字段嵌套深原生filter寫起來很費勁Fuse.js 會更省心。如果數(shù)據(jù)量很大但允許離線靜態(tài)索引也有純前端的 FlexSearch 這類高性能方案。關(guān)鍵是先搞清楚自己卡在哪個階段——是數(shù)據(jù)量、匹配精度還是用戶體驗。從我自己的項目經(jīng)驗看很多搜索體驗問題都不是“搜不出結(jié)果”而是“結(jié)果太多、太慢、太亂”。先確定數(shù)據(jù)規(guī)模再決定要不要上重型方案比一上來就套一個大而全的搜索框架要踏實得多。最后再分享一個小技巧無論選哪種方案一定要準備一份固定的測試數(shù)據(jù)把真實的 1 萬條、5 萬條數(shù)據(jù)提前放好每次改動搜索策略后跑一遍對比別等到用戶投訴才回頭查性能。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 欧美色图 色综合图| www.色婷婷| 91 欧美| 极品粉嫩少妇视频| 三级精品三级在线观看| 五月丁香影院| 日本人妻最新在线中| 熟妇艹鸡八| 婷婷中文网| 国产一区二区三区高清视频| 密臀国产在线| 花花AV导航| 亚洲免费97免费| renqi久久久久久久久久久久| 日韩精品中文字幕人妻| 丁香五六月啪啪| 蜜臀AV一区二区三区| 中文一区二区婷婷视频| 97干在线视频| 亚欧无码在线| 韩国一级婬片A片无码天美| 97超碰精品图片| 九九夜精品九九在线| 夜夜草网站| 偷拍三区| 84YTCOM性无码| 国产热RE99久久6国产精品首| 久久精品操| 熟女色图在线| 日韩偷拍色图| 亚洲激情四射| 亚洲国产欧美中日韩成人综合视频| 国产精品操| 亚洲日本大香蕉1| http://qxhbdz.com| 激情抓乳插进去啪啪啪日韩 | AV九九| xxxx网站亚洲精品| 欧亚性爱视频免费看| 国产色图乱伦| 一区二区三| 久久婷婷成人综合色怡春院| 九七超碰人人乐| 春色综合免费| 欧美性高潮| 97精品视频在线播放| 亚洲熟久久| 亚热日本熟女| 伊人久久大香大香线蕉中文| 亚洲97成人在线观看| 久久久啊啊啊| 欧美精品欧美精品系列| AV天堂因数| 啪啪自拍九九综合| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 91精品无码人妻系列| 青娱乐欧美激情一区二区| 99久久久久久亚洲精品不卡| 国产精品亚洲一级av第二区| 色噜噜精品一区二区三| 秋霞成人一级在线观看| 人妻熟女av国产网站| 黄色av一区二区在线| 久久91| 亚洲成成熟女人综合一区二区| 目产99999久久999| 97精品网| 国产精品熟女九色九色蜜臀| 久久久精品成人国产| 色999亚洲人成色| 中文字幕五区| 75大香蕉| 日本一线产区和二线产区伦理片| 9997se| 久久六六| 国产精品岛国片在线观看| 久久肏大逼| 亚洲午夜AV| 国产视频一区二区在线观看| 操淫穴亚洲五月丁香 | 国产精品一区二区手机看片| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 欧美日本不卡| 男人的天堂 在线一区| AV一起草在线| 99久久99九九99九九九| 江都AV在线| 60秒免费小视频| 69久久| 亚洲精品国语在线播放| 熟女人妻一区二区三区| 久久伦理视频久久大香蕉视频| 91劲爆| 久久久9999| 国产亚洲精品农村妇女 | 91精品国久久久久久无码| 91碰碰| 男女一进一出视频久久| 天天色播| 亚洲日韩东京热一区| 91精品国产乱码| site:sinbotex.com| 国产乱伦亚洲| 亚洲Av噜噜一区二区三区妖精| 九九热re99re6在线精品| 欧美呦呦性爱| 毛片麻豆91糖心精品毛情片| 88xx成人精品视频| 一品道视频一区二区三区| 在线视频五十市| 大香蕉中文在线| 91精品人妻电影| 人妻美腿丝袜制服诱惑综合天堂-| 久久9999| 日操粉逼逼| 欧美美女在线高潮999| 亚洲欧美91√| 狠狠久久亚洲欧美专区| 2020中文字幕在线| 国产精品蜜乳AV| 色女99一级片在线观看| 欧美一区二区男人天堂| 久久久网站| 操死我了啊啊啊| 国产亚洲精品一区二区三区| 欧美精品另类人妖xxxx| 青春草A| 欧美日韩中文亚洲v在线综合| 91国产精品在线看| 亚洲欧美日韩制服另类| 麻豆性爱视频在线播放| AV网站高清无码在线观看| 91色黑人少妇| 亚洲色图日韩精品| 亚洲欧洲中文日韩女优乱码| 人妻加勒比东京热| 97超碰色色| 亚洲黑丝在线| 日韩欧美操逼xxx| 国产伦精品一区二区三区视频女| 国产97在线 | 亚洲| 亚洲天堂电影精品一区| 人人么人人操| 九月AV| 久艹视频在线| 91成人18| 美美91成人国产精品欧美精品久久久久久久| 天天综合网~91| 夜夜夜久久| 牛牛AV人人夜夜澡人人爽| 国产精品九9| a片偷拍视频| 亚洲青色欧美| 国产精品久久久久综合| 麻豆久久精品亚洲精品88| 一区黄二区黄| 色噜噜人妻丝袜a∨先锋影| 揉揉揉夜夜| 青青草原狼av| 大香网站| 国产精品熟女一区二区三区| 超碰天天久久79| 午夜亚洲国产理论秋霞| 在线天堂资源亚洲| 99精品久久久久久| 天天爽天天操| 免费av大片| 不卡日本一区二区| 天美传媒国产原创中文字幕亚洲欧美另类 | 日本999精品| 日韩日本欧美在线观看| 四虎在线播放| 1区2区3区中文字幕日韩| 亚洲第一精品在线视频| 国产精品一区二区麻豆| 东北女人的毛片| 最新日产中文在线麻豆| 91精片| 亚州男人的天堂| 青青网三级视频| 最新国内自拍av免费| 亚洲欧美91√| 超碰97玖玖爱| 欧美制服另类丝袜| 国产一区二区三区精品观看啪| 久久久久久精| 97综合激情| 加勒比AV天堂| 久久9精品视频| 国产真实野战在线视频| 看大黄色大片原件| 四虎国产精品永久在线囯在线| 欧美综合777| 欧洲精品在线播放| 99re这里只有精品中心播放| 婷婷色婷婷| 综合操逼| 91精品女厕偷拍视频| 国产精品久久久| 夜夜夜爽www精品视频| 青青操在线亚洲视频观看欧美在线| 国产做?爰片久久毛片?片美国| 无码不卡八戒| 亚洲无码 国产无码| 午夜精品久久久久久久久久久久久| 精品无码人妻一区二区免费蜜桃| 日本丝袜美腿人妻九九| 校园春色制服丝袜中文字亚洲| 国产真实野战在线视频| 伊人久久大香线蕉无码| 天堂俺去俺来也www久久婷婷| 日本阿v天堂在线观看| 欧美综合1性辶| av2014 日韩在线中文字幕| 超碰97精品在线| 婷婷五月天色| 亚洲骚女一区二区三区| 中文字幕老熟妇黄色视频| 美女黄频a美女大全免费皮| 日韩有码 一区二区三区| 五月开心网| 青青草玖玖爱| 欧美天堂亚洲电影院一区在线播放| 九九玖玖精品| 欧美91网站| 亚州乱码中文字幕综合久久久| 中文高清一区二区的| 丝袜美腿诱惑亚洲欧美视频在线观看| 激情综合久久| 日产狠狠干| 精品久久視頻在线| 亚洲一二三精品久久网| 亚洲熟久久| 超碰久在线天天做| 人妻久久一区二区三区| 国产福利在线视频网站| 全球成人中文在线| 亚洲图片 91| 中文字幕在线观看第二页| 在线观看AV不卡| 啊啊啊用力在线观看| 国精品一区二区三| 色女免费在线观看视频网址| 97久久超碰日韩精品| 高颜值美女口爆高潮浪叫| 日本不卡在线二区三区| 国产宅男宅女在线观看| 无码伊人久久大杳蕉中文无码| 影音先锋国产精品| 大香蕉国产中文自拍| 久久熟女久| 疯操AV| 天天网综合| 美女操逼A A| 欧美日韩中文亚洲v在线综合| 99热在线观看| 欧美白嫩在线放| 色五月激情AV在线| 高潮毛片无遮挡高清免费| 强奸乱伦资源| 欧美制服另类丝袜| 超碰69| 日韩精品 欧美激情| 精品国产乱子伦一区二区三区,精品一| 日夜精品| 日韩一级成人毛片免费观看| 亚洲综合色男人网| 超碰九九| 国产麻豆福利av在线播放| 久99热| 色综合加勒比四四季| 久久久91福利姬| 欧美性爱一区二区| 五月丁香网站| 日本免费二区三区| 日本欧美一区二区三区免费| 欧美 综合| 日日躁夜夜躁狠狠躁超爽| WWW啪啪的com| 91亚洲不卡一区| 成人草草视频| 乱论91| 欧美少妇第一页| 日韩三级av片| 九九Av| 天天天操天天天爱| 日韩乱中文| 最新加勒比丝袜在线| 亚洲骚男同com| 伊人久久综合影院精品久久久 | 久久啊哟| 日韩欧视频| 黑人嘿嘿嘿超爽免费视频| 欧洲中文字幕| 尤物网站91| 国产精品成人无码av| 熟女网站最新| 青娱乐国产精品| 欧美大香蕉97| 亚洲色阁| 蜜桃传媒一区二区亚洲| 夜夜精品视频| 天天爱天天韩国日本牛牛牛牛| 97资源站久久| 日本三级韩三级99久久| 超碰色美女| 亚洲一区二区中文字幕| 青青草一区二区三区四| 久久久 国产精品| 久久久久96| 精品一区二区人妖| 在线天堂资源亚洲| 96久久精品一二三区色欲| 欧美日韩国产人人| 国产色呦呦| 热热色国产一二区AV| 亚洲精品官网在线观看| 综合网亚洲1| 天天干夜夜一操| 婷婷10月天青娱乐| 狠狠久久亚洲欧美专区| 成人线上超碰| 精品国产国产AV| 免费在线黄片视频| 亚洲资源一区| 99精品丰满人妻无| 亚洲成aⅴ人片不卡无码| 91 丝袜在线观看| 日韩成人网址| 一级性爱网| 色九九九九| 男女激情黄色网址| 男人久久天堂| 欧美一区二区三区黄色影视| 狠狠色色| 国产色综合亚洲色综合吹潮| 99日免费视频中文字幕| 国产激情久久| A片A5445444| 97欧美日韩中文| 日本国产成人亚洲精品无码| 日韩精品-原创伙伴| 久久理论字幕视频| 大香网站| 亚洲欧洲中文日韩女优乱码| 蜜臀99久久精品| 日本 欧美 亚中文字幕| 一本大道不卡一二三区| 夜夜国自区| 五月天色色网站| 欧美传媒| 国产深喉| 亚洲drav色图| 色眯眯射| **一级毛片国产| 日日干天天干夜夜爽| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | av网站免费看| 91熟女丨老女人| 青娱乐大香蕉| 婷婷情色综合网| 精品一啪| 久久无码成人| 超碰免费人妻在线| 久久久久久免费电影| 久久超碰、| 国产精品久久久久综合| 久久国产AⅤ| 夜夜黄| 精品十三区| 啊啊啊啊一区| 99爱爱| 无码最新| 国产野战露脸在线播放| 26uuu最新| 综合少妇网| 日本久久999| 日本97久久久精品| 按摩中文字幕| 欧美熟爽综合| 91 刺激在线| 熟女突然公开看18禁影片 | 国产高清不卡视频| 国模限制级电影| 伊人久久大香大香线蕉中文| 玖玖玖玖精品国产剧情| 综合五月婷婷亚洲一区| 午夜激情成人在线观看| 男女猛烈无遮掩视频免费软件| 玖玖综合网| 久久婷婷视频| 久久久亚洲高清不打码| 7777奇米影视久久| 99re热有精品视频国产| 四虎午夜影院| 国产福利视频精品视频| 亚洲日本激情| 久草国产在线视频| 美女一区二区国产精品| 国产树林里野战在线看| 国模无码一区二区三区在线| 成人乱码一区二区三少妇| 十八禁av无码免费网站APP| 91成人高清在线观看| 情趣丝袜无码操逼视频| 免费一级性爱久久| 奇米狠999| 中国国产精品一区视频| 午夜小电影在线插入淫高潮| 91亚洲丝袜| 久超超碰| 亚洲综合大片| 黄在线| 国产亚洲精品激情| 午夜性生活av免费在线看| 亚洲图片欧美另类综合免费视频大大香| 欧美亚洲丝袜美女电影| 五月丁香婷婷综合网| 97爱综合| а√天堂资源官网在线资源| 被男人吃奶很爽的毛片| AV不卡在线| 亚州操逼网| 67914亚洲精品| 美女97超碰| 中文字幕一区 二 区 三 四 五 区日 日 骚| 国产又粗又又黄又猛| 天天香香欲综合| 操操操日本的逼| 操逼视频免费日韩无码| 制度丝袜99| 思思热久久成人| 欧美强奸一区二区诱惑| 国产精品久久9| 天操天操夜操夜月操月年年操| 操我啊啊啊啊啊| 亚洲熟久久| 亚洲 无码 有码 中文字幕| 男人天堂新在线| 蜜臀AV秘一区翔田千里| 思思热免费视频观看| 懂色AV一区二区三区| 综合激情97| 欧美精品,四区。五区| 欧美96精品在线| 成人七区| 亚洲一区中文字幕一区| 亚洲av热热色| 色臀av| 亚洲国产成人福利在线观看| 五月天激情网站| 少妇色综合| 日韩少妇无码| 国产精品成人在线| 国产青青美女玩逼视频| 天天综合网网欲色| 精品超碰国产| 国产地址二三| 国产精品人妻无码久久久老鸭窝 | 黄页网站成人免费| 欧美gv在线观看| 婷婷久久久| 色五月激情AV在线| 亚洲天堂中文字| 中文伊人大香蕉视频| 中文字幕二区| 欧美人妻久久精品二区三区| 97视频网站在线观看| 亚洲欧美激情小说| 强歼乱伦资源网| 欧美精品第四五页中文字幕在线观看| 中国熟妇| 婷婷伊人| 97亚洲色图| 无码抄逼网| 夜草欧美| 亚洲欧美日韩免费电影| 欧美高潮在线| 破苞ⅩXXX性无码动漫无码| 色婷婷五月天| 四虎精品亚洲| 欧美十八禁在线看| 青娱乐黄色录像| 国内毛片无码一级毛片| 日日AAvv| 色官网色综合| 日韩成人午夜精品久久高潮| 欧美组图日韩亚洲中文字幕| 国产精品一区二区在钱播放| 91社区伊人| 久操B网| 神马麻豆福利院| 六月丁丁香| 人妻精品一区二区| 性欧美另类高清| 火箭成精品视频884必出精品| 六月丁香久久| 夜夜躁狠狠躁日日躁av| 欧美十八禁视频| 亚洲欧美日韩夜夜| 亚洲综人网| 国产免费久久久久| 大香蕉伊人75| 丝袜高跟澳门91视频| 三级网色| 日韩AV噜噜噜一区二区三区四区| 中文字幕在线观看二区三区| 午夜精品久久久久久久第一页按摩| 九久9精品| 色色97爱| yiren97| 亚洲va有码在线天堂| 欧美高清在线| 这里都是精品在线观看| 精品无码少妇| 久久有碼| 欧美中出1| 久操免费在线| 日日夜夜模| 九九热精品| 精品国模无码| 玖玖超碰熟| 一区二区你上我| 久久久亚洲| 91美女看B| 天天干天天拍| 超碰国产精品久| 新怡红院| 激情黄色五月天| 激情五月天婷婷| 色综合V| 久久精品区| 久久97资源 网| 日韩不卡a级视频专区| 久久亚洲一区二区色婷婷| 蜜桃色色网站视频三区| 婷婷伊人五月| 天天综合网合集91| 99re公开精品免费视频| 亚洲一区二区中文字幕| 9国产超碰| 综合大香蕉美。| 96久久科窝| 欧美高清91| 花野真衣| 天天综合麻豆视频| 午夜传煤十二区精品| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 日韩色| 青娱乐国产剧情av一区| 亚洲有薄码区久久在线一区| 18一区二区三区| 九九碰九九爱97| 免费国产视频| 久久久96精品| 伊人一区二区三区| 特级大荫道BBwBBwBBW| 国产精品一区二区黄片| 日韩无码a片| 少妇综合| 久久女女| 大屁股国产在线视频| 五月天婷婷激情| 国产 三级自拍| 欧美黄片免费在线观看视频| AV麻豆免费一区| 嗯嗯不要视频| 日韩有码专区| 日韩在线电影| 97免费在线观看视频| 国内一级精品| 人人操人人肉久久精品| 深喉吞精| 天堂亚洲精品| 欧美综合1性辶| 亚洲午夜精品久久久中文影院| www. 男人天堂成人在线| 超碰人妻中文在线| 秋霞鲁丝午夜无码一区二区三| 久久天天躁日日躁狠狠躁 | 超碰美国| 三四中文字幕| av天堂电影网| 国产亚洲精品一区二区三区| 中文操逼字幕| 国产Av超碰| 八戒无码国产午夜福利| 很黄很色的视频在线观看| 欧美性爱中文字幕无线码| 在线综合色| a级理论午夜日本| 久9视频| 加勒比大香蕉视频在线| 你操综合| 330Dv国产女人终合视频极品人与兽| 亚洲天堂第一页| 丝袜美女诱惑 91 视频| 丝袜色综合| 国产午夜精品一区二区三区牛牛| 97综合| 91伊人久| 这里都是精品在线观看| 色婷婷aV一区二区三区麻豆综合| 大香蕉国产中文自拍| 无码人妻精品一区二区三区九九| 超碰 av 女人天堂| 99日视频在线免费| 十八禁啪啪视频| 中文字幕乱在线伦视频中文字幕乱码在线 | 精品无码久久久久久国产浪潮| 蜜乳AV一区| 99操逼| 亚洲综合网图| 久久国产精品视频| 亚洲影院成人| 婷婷亚洲五月***久久| 精品少妇后入一区二区三区四区人妻巨乳 | 成人婷婷丁香| 久久久久久久久久久久久久久久9| 欧美色图自拍| 天天视频网站黄| 96久久精品一二三区色欲| 色妹子A V| 精品一区二区三区蜜桃臀www| ...日韩成人一区二区三区字幕| 国产精品在线免费| 国产理论视频在线播放| 天天肏美女| 夜夜嗨TV| 色狠狠 - 百度| 国产熟女少妇一区| 玖玖资源视频一区二区三区| 啊啊啊操死我| 亚洲欧洲国产综合av| 午夜欧美J进J出白浆流出久久久| 蜜桃臀AV在线| 中文字幕日韩电影人妻| 色伊人91| 91干熟女| 99r九九| 校园春色美腿丝袜 | 欧洲自拍第一页| 黄色免费一级在线毛片| 色99色| 干妹子| 一区二区三区黄片免费观看| 香一区二区三区| 亚洲Av诱惑| 久久亚洲AV无码专区国产精品| 91老熟女逼| 亚洲高清色综合| 九九黄色视频在线观看| 男人的天堂久久狠| 国产一区自拍欧美日韩| 男人天堂站| 男人在线天堂| 色av中文字| 亚洲精品欧洲色| 亚洲蜜乳av| 东京热精品97综合网| 成人免费视瓶| 天堂国产AV| 成人无码在线视频网站| 色综合潮| 吖在线不卡一区二区国产剧情| 99色色网| www亚洲欧美| 欧美综合站| 97视频在线看| 久草视频分类在线| 亚洲欧洲日韩中文字幕一区| 乱老女人一区二区视频| 久操免费电影| 色综合尤物| 无码二级三级| 蜜臀久久99精品久久久久久久久| 啊啊啊爽爽| 久久久久久久一级黄色打同平台| 欧美亚洲91| 99精品丰满人妻无| 午夜a成v人电影| 久久超碰大香蕉| 精品人成视频在线观看| 97 国产一区| 中文字幕亚洲永久精品| 中文字幕色AV| 日本三级韩国三级99| 欧美综合自拍| 精品999日本| 欧美久久伊人| 熟妇色99| 麻豆婷婷成人一二三| 欧美性爱第一区| 国产成人主播| 人人射人人操人人摸| 四虎在线视频| 欧美综合色站| 国产AV久久野战精品| 后入精品| 97色欧州| 97人人模人人爽人人| 白丝AV| 国产1727欧美| 好吊妞转入那个网| 天天摸夜夜添无码小视频| 青青草导航在线视频| 日韩亚洲美女一区久久| 偷拍三区| 亚欧美色图| 久久亚州高清| 五月天综合网| 91深夜夜| 九九九九热| 青青草乱入乱欲视频在线观看| 国产精品熟女乱伦| AA级电影三区| 亚洲激情在线| 嗯啊啊啊轻点视频 | 久久神马| 日夜尻逼网| 超碰色中文| 国产精品视频精品一二| 日韩一级久久毛片| 怡红院成人视频| 91性| 秋霞男人网| 99性视频| 伊人影院综合是一个与深夜成人在线| 欧美91精品国产自产| 熟女露脸激情自拍视频| 干b在线性社区| 亚洲成av人片色午夜乱码| 日韩免费看在线黄色片| 夜夜嗨视频| 99少妇| 色欲久久99精品久久| 日日做夜狠狠爱欧美黑人| 成人影 天天操 亚洲| 亚州精人品大香蕉| 日韩欧美视频青青| 狂操嫩妻视频一区二区三区| 五月天婷婷久久| 亚洲AV无码国产精品久久久久| 黄色AAAAA欧美| 搞中出久久| 天天影视色香欲综合网小说| 一区二区三区高清 | 欧美专区第一页| 免费成人自拍视频在线| 免费国产| 国产尤物在线三区| 久久99干一本高清| 国产9熟妇视频网站| 超碰精品97| 日韩一级二级三级| 久久久久九九九九| AA级电影三区| 激情网色| 一级免费啪啪片| 丁香五月激情婷婷| 欧美三级不卡| 欧美97日韩| 91丝袜在线视频| 午夜精品人妻二区三区| 成人开心网在线视频| 色噜噜日韩精品| 78操B| 日韩欧美亚洲自拍偷拍| 另类亚洲一区二区三区| 久久久久免费看少妇A片特黄| 国产无码精品成人| 中文字幕亚洲热播人妻| 日韩性爱小视频在线观看| 亚洲经典啪啪| 在线啊啊啊啊| 日韩欧美水蜜桃人妻| 色哟哟精品1精品2| 亚州色综合| 人人操我人人干| 亚州AV无码国产精品| 婷婷五月天小说| 天天综合香 ld视频| 人妻少妇久久中文| 97免费在线观看| 天天干18禁| 国产精品熟女一区二区三区| 韩国免费播放一级毛片| 搡老女人老妇女AAA一VU麻豆 | 久久精品成人| 2017超碰| 东京热毛片177b2viP| 日韩乱码Av| 天天干人妻视频| 思思久热在线精品66| 国语对白在线播放视频| 妇女性内射冈站HDWWWCOM| 成人线上超碰| 黄色大香焦1级‘′‘| 蜜桃色色网站视频三区| 欧美在线视频观看一二三四区高清| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 日韩有码一区三区| 在线小视频| 91狠狠综| 久久婷色| 任你干在线视频| 久久久久久网址| 欧美精品999| 1024手机看片欧美日韩| 一级毛片电影免费看| 国产亚洲国产超碰| 性欧美精| 日韩免费av片高清无码| 三级三级三级日本99| 97国产精品久久久久| 啪啪啪精品| 久操九九九九| 日本不卡一二区| 国内自拍 日韩激情 99| 中文久久96| 1级午夜影院费免区| 国产青一二三| 蜜臀久久久99久久久久| 日韩久久激情精品| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 91爽啪| 欧美中日韩XXXX| 免费黄色A片| 色在线69堂| 中国一级操逼视频| 色九九九九| 51国产午夜精品视频| 亚洲有薄码区日本系列中文字幕| 日韩在线观看AV| 国产熟女乱论| 色踪合AV| 郑州宾馆老熟女露脸啪啪| 久久超碰98| 久久久精品91八戒| 亚州精人品大香蕉| 欧美三四五区| 操婷婷逼| 欧美色九九| 五月天激情婷婷| 96麻豆精品一区二区三区| 国产免费一区二区在线A片视频| 亚洲熟妇AV日韩熟妇在线| 偷拍自拍在线视频观看| 国产欧洲精品亚洲午夜拍精品| 26uuu性| 精彩久久中文| 大屁股xxxxx| 超碰诱惑| 野狼激情网| 成 人 A V免费视频在线观看| 欧美一级欧美三级在线观看| 综合av社区| 人妻丝袜肏逼| 亚洲国产激情国产av| 91日产桃蜜| 亚洲精品久| 日韩精品色呦呦| 狠狠躁日日躁夜夜躁A| 久久亚洲精品成人av| 欧美亚洲首页| 岛国AV一区二区电影| 欧美亚洲色图另类国产| 成人资源中文字幕在线观看| 婷婷五月天补不补| 黑人精品XXX一区一二区| 欧美影音在线| 色噜噜综合网| 欧美福利视频啊啊啊啊| 日本孕妇孕交| 亚洲无码色| 日韩精品字幕| 999久久芭蕾| 无码heyzo高清一区| 亚洲色图欧美色图日韩色图| 色九九久九九| 日本加靬比网站发布页| 亚洲成a人在线观看久| 美女91AV| 亚洲色图 图片| 日韩欧美视频青青| 少妇人妻好深太紧了vr91| 桑老女人九区| 少妇与黑人高潮在线| 日本在线播放不卡一区| 欧美一级在线观看成人| 超碰是碰在线观看| 动漫片子网站3黄| 蜜桃无码AV一区二区| 自拍内地三级在线观看| 四虎av在线| 日韩精品人妻中文字有码在线 | 精品一区二区三区蜜桃臀赵总 | 超碰亚洲97| 蜜乳AV网址| 在线观看一级α片刺激高潮视频| 老司机福利社视频在线观看| 精品国产99| 95人妻爽爽人人做人人澡 | 97色爱| 五月婷婷综合网| 懂色av色欲av蜜臀av| 九九九九9999| 欧亚 另类 久| 老女人碰碰在线碰碰视频| 性欧美另类高清| 欧美人人AAA| 成人性爱av| 欧美极品| 91熟女丨91老女人| 人乳av| 97在线观看免费视频l| 小草精彩毛片| 99激情视频| 欧美劲爆视频一区二区| A级片日韩欧美国产欧美视频精选观看 | 亚洲日韩黑丝| 99国产精品免费| 女人妻一区| 国产成人亚洲精品自产在线| 国产成人精品日本亚洲语言| 久久riav中文精品| 在线岛国新天堂8| 四虎国产精品永久在线囯在线| 99rre在线精品99re8| 综合色久欲| 美女丝袜激情小说| 91AV天堂| 欧美日动态视频| 激情文学欧美| 伊人久久国产免费观看视频| 人人乐大香蕉| 亚洲综合色男人网| 激情小说五月天| 五月天色综合| h在线看免费版在线看| 超碰国产在线| 人妻AV在线| 99热网站| 激情六月天| 久久亚洲不卡| 一本一道人妻久久一区二区三区| 婷婷五月天伊人| 男人天堂2019亚洲| 欧美激情总合网| AV天堂丝袜| 欧美最婬乱婬爆婬性视频 | 97爱啪| 人人妻人人色一区二区三区| 怡红院网站在线视频| 天天综合~91| 老妇女91| 操逼视频国产无套| 能在线播放的国产三级| 91精品啪在线观看国产城中村| 图片区小说区| 欧美日韩国产在线| 极品粉嫩一区二区| 人妻少妇精品久久久| 女上位精品在线| 日韩一级二级三级| 色色毛片| 曰本人妻人人澡人人夹| 日韩性爱播放| 97人肏| 天堂在线一区二区| 白嫩91在线亚洲| 亚洲男人天堂av| 伊人黄色片| 国产三级电影免费观看| 国模一区二区三区| 青青草乱入乱欲视频在线观看| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 国产精品分类在线观看| 黑人狂躁日本妞一区二区三区| 亚洲黄网在哪免费看| 97中文超碰| 色偷综合| 人妻久久一区二区三区 | 人人操人人摸人| 女优视频第10页| 91爰爱欧美| 超碰久超碰久| 樱花蜜乳av| 99热这里只有精品9| 丝袜综合| 亚州欧美另类| 嫩呦国产一区二区三区AV| 久99视频| 91N综合在线| 中国特猛少妇色xxx| 99re国产精品视频| 天美AV片| 亚洲激情深爱文学小说网站| 在线日韩精品一区二区三区| 欧亚免费视频| 大香蕉在线视频重口味毛片在线| q2午夜理论片夜色av| 91综合色噜噜| 日本福利二区视频| 乱欲性色| 2017大香蕉| 国产精品青草综合久久| 九九拍拍精品视频在线播放| 亚洲狠| 天天做日日爱夜夜爽| 久草色悠悠在线视频| 久久αⅴ| wwwcaobibi| 欧美性爱精品一区二区| 日韩在线一区二区| 五月综合激情网| 色拍偷亚洲| 国产黄色视频久久| www.99热| 久久风骚城市| 亚洲精品官网在线观看| 日本不卡三级网在线播放| 国产综合久| 果冻国产精品麻豆成人av| 加勒比综合九九99视频在线播放| 亚洲高清91| 美女自卫慰黄网站免费| 亚洲性图91| 激情抓乳插进去啪啪啪日韩| 久久综合乱子伦国产免费| 欧美 亚洲| 久久思思热| 日韩无码第3页| 亚洲AV成人无码久久精品播放| 在线观看A啊啊啊| 网站A V在线| 熟妇女人妻呻吟久久AV| 色香AV| 艹我哪美一区无码| 青青草好吊色| 黄污污污污| 91亚洲人| 久久黄黄| 亚洲综合第一页| 99热97| 成人午夜高潮av猛片| 人妻密肉在线观看| www久久国产精品| 99国产天美| 岛国在线免费视频| 干B| 亚洲最新中文字幕免费 | 久草成人| 91九九九馒头| 亚洲最新Av| 蜜臀久久久| 2021久久国产综合精品青草| 超碰伊人在线| 亚洲高清无码AAA久久久精品| 老鸭窝日丰县女人| 欧美特大黄一级片片免费| 欧美性第1页| 免费视频无码| 色在线视频导航| 日本精品性生活久久久| 国产成人手机视频激情| 91老熟女91老女人| 婷婷色中文字幕| 啪啪综合网| 欧美黄片视频在线观看免费| 青青草狠狠撸| 国产免费永久精品无码| 97伊人网| 久久天天躁日日躁狠狠躁| 淫荡熟女乱伦网| 欧美三四五区| 久久国产精品91| 亚洲人妻精品一区二区| 天天做天天爱| a级免费在线观看| 91性高| 亚洲精品成人| 久久六六| 大屁股国产在线视频| 色情五月婷婷| 在线观看一级α片刺激高潮视频| 欧洲亚洲天堂精品| 伊人91| 人人妻人人爽 97人人看碰人免费公开视频| 亚洲综合69| 国产 日韩 欧美 人妻 熟女 中文 69人妻精品一区二区绯色 | 国产乱码久久久| 96AV久久久| 爱我干综合| 国产精品ⅴ无码大片在线看.| 91在线丝袜| 性色中出| 成人av免费观看| 国产美女自拍AV| 国产又粗又长视频| 九九九久久久久| 女优视频第10页| 人妻乱仑一区二区三区| 亚洲欧美成人网站AAA| 色天使AV天堂| 神马久久网| 混色激情av| 人妻精品视频一区二区| 日韩极品无码B| 欧美翘臀视频网站一区二区三区| 精品176精品2| 综合色图区| 99精品网| 日韩免费看黄片| 在线人成亚洲视频免费观看| 后入综合久久| 老司机免费视频在线91| 色999人与兽| 日本3级一区二区免费| 女人被男人桶爽视频网站| 精品九九| 日韩综合色图| 久久亚洲一区女同性恋中文字幕| 日韩78m视频| 日本中文字幕高跟| 国产精品一区人妻精品阁在线| 探花一区在线| 影音先锋视频在线| 国产在线能看的你懂的| 久9精品| 女人香蕉久久毛毛片精品| 舔舔啊| 久久精品视频一区三区小泽玛利亚| 四虎AV无码| 超碰79人人乐| 99精品视频在线观看| 日韩一级免费性爱| 艹少妇网站| 综合免费无码中文| 久久精品中文字幕观看| 三级特黄60分钟播放| 麻豆视频国产一区二区| 色综合一本| 一中国女人毛片水真多| 婷婷久久五月综合激情| 国产一区二区二区按摩精品啪视频| 国产精品久久久久婷婷二区次| 全国男人天堂网| 四虎精品永久在线观看| 蜜臀网址在线| 91亚洲最新在线| julia国产在线| 久久久久久久久久久久97| 日本三级精品| 78精品| 91在线视频国产网站| 免费观看成人www精品视频| 一级人妻性爱视频| 超碰在线观看av不卡|