日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

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
返回資訊列表
99色日| 无码9区| 日韩15p| 神马久久午夜| A级片日韩欧美国产欧美视频精选观看| 日本最新免费韩国1区2区视频播放| 欧美亚综合色图| 蜜桃一区二区三区| 色综合天天爱去电影网| 99色网| 亚洲三区视频| 1024日韩| 日韩资源网| 欧美熟妇精品黑人巨大91| 人妻丝袜一区二区三区在线| 天天干天天舔| 中文字幕一区二区三区人妻少妇在线| 一本大道不卡一二三区| www.av在线视频| 人妻少妇久久| 亚洲制服aⅴ中文字幕| 啊视频在线| 亚洲美女高潮喷水视频| 亚州色图欧美| 久久久久9| 1024精品在线| 十八禁视频一区二区| 亚洲精品中文字幕一区在线视频 | 日本九九久久99| 屁股久久久久久久| 欧美强奸乱能| 久久av网| 亚洲情色综合| 人妻AV 中文字幕的| 国产成人精品午夜福利| A级毛片在线看免费| 亚洲男人天堂2019| 亚洲国产97在线精品一区| 黑人猛交| 六六久久日韩不卡| 怡红院久久老司机| 精品成人av一区二区三区在线| WWW啪啪的com| 九九九九九九九九九九九免费国产| 久久久久成人亚洲国产| 激情综合 婷婷五月 红杏| 97国产精选| 日韩人妻播放| 97天天爽| 欧美成人一区二区| 麻豆精品.欧美精品.日韩精品.| 超碰精品日韩欧美国产| 亚洲午夜免费狠狠干| 2017天天操天天日| 91色色色| 亚洲色电影在线| 亚洲天堂男人在线| 91人妻人人澡人人爽人人精品| 日本人人操人人操| 99在线啪| 这里只有精品视频在线| 97超碰超| 色爱综合网欧美| 五月婷婷丁香六月丁香| 久湿久久| 99这里有精品| 无码人妻精品酒店| 性色综合网| 欧美综合自拍亚洲综合图| 97超碰中文字幕| 久久九九热| 日韩精品 视频一区二区| 北野未奈加勒比av| 一本一道波多野毛片中文在线| h4610国产人妻| 97干在线视频| 久热精品在线国产| 五月激情视频| 91模特在线观看| 夜夜影视四色| 桃色六月天| 秋霞一级A片黄色视频| 都市激情人妻一区二区青青操视频| 成人麻豆av电影网站| 超碰97导航| 1区2区3区在线视频| 日本一区二区不卡精品| 综合色一区三区二区| 蜜臀99999| 亚洲精品中文字幕一区在线视频 | 五月丁香| 中文字幕诱惑制服人妻丝袜美丝袜美| 欧美麻豆成人同性GⅤ在线| 激情五月激情综合网| 超碰97亚洲| 一级黄色性爱A级片| 午夜在线播放| 欧美制服另类丝袜| 久久久久9| 亚洲国产中文字幕| 日本性爱少妇| 日韩精品一区,二区 九九...老司机| 久久中文字幕一区不卡| 亚洲丝袜99| 国产激情在线| 天天天天天天天天综合| 无码精品一区二区三区潘金莲| 九九九九日本 | 成人乱码一区二区三少妇| 婷婷15月天青娱乐| 午夜男女爽爽爽在线视频| 色九九久九九| 97资源免费视频| 大香蕉综合在线| 竹菊一区二区三区AV线| 97精品97| 嗯嗯啊啊亚欧精品| 免费视频在线观看啊啊啊啊啊| 欧美综合狠| 99re这里只有精品3| 色九久| 国产精品久久久久久久毛片1| 久草看看看| 久悠悠av| 日韩性爱高清免费视频| 天天干人人乐| 国产熟女精品区| 全球成人中文在线| 亚洲国产欧美一区二区潘金莲 | 狠狠夜色午夜久久综合在线| 成年人一级黄色毛片大全在线观看| 亚洲精品一卡二卡三卡福利视频网站| 美国一区二区免费视频| 国产女人和拘做爰视频| 丁香五月婷婷啪啪| 成人性生活高清视频在线播放| 精品人妻视频入口| 九一精品牛牛一区二区| 男人高清无码一区二区| 亚洲不卡三级手机播放| 超碰97极品9| 亚洲色悠悠久久88| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 亚洲 日本 国产 综合| 在线观看啊啊啊啊啊| 台湾佬激情综合| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 二对二中文字幕。| 91老熟女逼| 青草视频在线看看看看看看看看看| 亚洲高清无毛一区二区| 7777奇米影视久久| 爆操无码| 操学生天天| 黑操B| 91热色| 东京热免费视频| 白嫩91在线亚洲| 欧美日韩国产三级黄色| 亚洲精品一卡二卡三卡福利视频网站| 色欲蜜臀AV| 亚洲自拍欧美色综合| 草草电影院| 四季AV一区二区凹凸精品小说| 欧美日日操| 欧美亚洲在线| 台湾佬中文娱乐自偷自拍| 色视频蜜乳| 91欧美巨乳| 五月丁香啪| 操逼无码操逼| 东北女人高潮视频| 亚洲人人夜夜澡人人爽| 亚洲色吧网| 亚洲精品天堂久久A∨51成人漫| 99久在线精品99re8| 八人操人人摸人人看| 夜夜爽夜夜操| 九九九九九九免费视频| 欧美日韩色图片| 国产精品人妻熟女aⅴ| 久草电影网| 欧美性色综合网| 中国乱伦一区二区| 天堂v无码免费视频| 欧美在线中M| 日本99视频| 日韩欧美亚洲自拍偷拍| 91精品国| 中文字幕av丝袜| 日本人体九九九九九九| 成人乱码一区二区三少妇| 亚洲综合97| 久久久久久久久国产| 97色插| 精品国产精品一区二区| 国产精品香蕉| 人妻激情在线视频| 欧美激情欧美精品| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 久久激情综合| 亚洲精品亚洲人成人网| caoni国产亚洲av| 97视频网站| 日韩有码中文字幕女同性恋 | 日韩欧美经典在线观看| 国产精品自拍xxxx| 变态乱伦伪娘灌肠一区二区| 波多野结衣AV无码一区| 好爽免费视频| 少妇久久久久久| 97色欧洲| 乱操9999| 免费精品AB| 天天操天天日天天干| 日韩av熟女一区二区三区成人| 丁香五月社区| 99视频在线| 无码国产精品午夜不卡(| 99国产在线 精品 视频| h4610国产人妻| 97人人操人人摸人人爱| 最近2019中文字幕国语免费版| 亚洲黄色视频在线观看视频| 中文字幕欧美日韩三级| 日韩一级欧美一级国产一级台湾| 天天日天天干少妇日| 粉嫩av一区二区三区天美传媒| 日韩无码人妻中字久久三区四区| 青女偷拍网| 色约约一区=区三区| 超碰97综合网| 天久久久噜噜噜久久国产精品爽爽 | 精品十八在线观看| 99av| 黄色一区三区| 日韩九九九| 中文字幕免费在线观看| 欲色综合| 最新无码国产| 国产精品久久久久亚洲av| 成人5码视频| 亚洲一区二区三区欧美日韩| 97碰在线视频| 青青草十区九区爱夜| 好看的91视频| 国产 无码 一区二区| 综合网欧美| 国产成人在线观看网址| 2017人人操,人人摸| 婷婷去俺也去六月色| 日韩黄色片子| 婷婷丁香五月激情啪啪| 精品久久在线区一区| 超碰人妻中文在线| 啊啊啊啊好疼| 国产精品一区二区久久精品| 欧亚乱色熟女一区二区| 性吧在线视频| 麻豆 亚洲 97| 一区二区三区男人的天堂| 亚洲综合嫩| 午夜男女爽爽爽影院视频| 乱论91| 91国产精品在线看| 超碰视97中文| 欧美乱伦专区| 开心激情婷婷| 97人妻免费中文字幕| 欧美性爱系列| 亚洲97P| 国产91丝袜 在线播放| 欧洲性爱无码区| 婷婷视频在线免费观看| 99这里有精品| 91国产丝袜美女| 国产精品白领在线观看| 天天干,夜夜爽| www.91欧美| 78超碰| 日本午夜精品理论片A级APP发布| 一区二区 电影 亚洲| 欧美亚洲天天| 黄网色一区二区三区四区精品| 啊啊啊啊视频免费| 92久久| 久久久国产成人一区二区三区在线| 熟妇最新先锋一二三区| 欧美天天射| 欧美激情专区| 午夜视频好爽啊| 日韩乱码av| 色97欧美| 久久人人舔人人爽舔人人av片| 成人性爱美曰韩| 欧美有码亚洲中文字幕一区二区三区四区| 高清无码人妻久久久一区二区三区aⅴ| 日韩无码a片| 天天碰操中国年青熟妇| 亚洲密乳AV| 欧美日韩一区二区三区四区蜜桃| 天天看片天天爽| 色色九区| 婷婷色一区| 超碰97丝袜| 国产67194| 97在线日韩中文字幕| 中文字幕91页| 青草伊人久久| 国产超碰人人操| 欧美在线|亚洲| www黄片免费看com| 亚洲欧美综合| 欧美色图小说综合| 中文久久爆乳| 91精品黄在线观看| 九久久精品| 激情五月天插| 日韩毛片9| 欧美在线观看综合国产| 96麻豆精品一区二区三区| 国产激情在线| 欧美v日韩v亚洲v最新在线| 小草三级久久观看| 三级精品三级在线观看| 99久久无色码| 亚洲精品性爱片| 超碰在线人妻不卡| 亚洲精品乱码久久久久久蜜桃麻豆 | 天堂亚洲精品久久老牛| 韩三级a视频在线观看| 亚洲 欧美 另类 综合 偷拍| 亚洲视频1区| 天操老女人| 97精品在线视频| 亚洲电影中字一区二区| 大香蕉伊在线久草麻豆天堂故事| 日韩精品在线观看观看| 欧美色图在线视频少妇| 五月激情视频| 中字幕人妻一区二区三区| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 91成人久久| 免费啪啪啪网站18岁| 亚洲情色 自拍| 色女网日韩| 亚洲一区二区三区中文字幕| 超碰久久.com| 夜夜福利| 色情乱伦AV| 超碰97在线中文| 发朗少妇买婬全视频中文| 色色毛片| 91n处女在线观看| 精产国品一区二三产品| 玖玖婷婷五月天| 农村少妇久久久久久久| 99国产精品免费| 丁香五月色情| 玖玖玖玖精品国产剧情| a片久久久久久久久久久久| 超碰视97中文| 91老熟女逼| 亚洲综合九九| 操逼视频免费日韩无码| 男同专区一区二区三区在线| 亚洲国产中文字幕| 大香蕉中文aV在线| 97九色人妻| 人、人、摸,人、人、草| 中文字幕人妻资源在线| 亚洲图片小说欧洲| 风骚少妇视频中文字幕| 偷拍五区| 综合亚洲情色| 视频在线观看一二三区| 婷婷色网| 一级免费啪啪片| 色婷婷综合视频| 99亚洲天堂| 日韩黄片影院| 日本不卡二区| 伊人91| 国产九九九九九九| 青草影院内射高潮| 九久9精品| 天天情欲宗合网| 亚洲色资源| 亚洲 se图 欧美电影| 中文字幕一区av| 婷婷91| 中日韩久久久| 亚洲高清无码AAA久久久精品| 久久精品店| 毛片麻豆91糖心精品毛情片| 伦理弟一页| 综合网久久| 东京热亚洲一区二区| 国产67194| A片 AV一级在线播放观看免费| 91快色色色色色| 男女激情黄色网址| www.色婷婷色综合| 激情婷婷五月天| 香蕉在线一区二区三区| 日本99热| 亚洲人在线| 天天综合香 ld视频| 日本不卡码黄色| 日韩三级在线观看mp4| 美女淫穴| 欧美精品久久| 日曰骚久久精品| 亚洲男人天堂2017| 亚洲中字幕日本一区二区三区| 97在线免费观看视频| 久久久久久久强迫| 国产精品成人蜜臀AV在线| 欧美精品自慰系列寂寞少妇| 国产丝袜视频| 曰本熟女视频| 欧美综合在线第一页| 外国免费性情大片| 欧美自拍偷拍综合图片| 17c在线成人免费A片观看| 99久久9| 91免费看一区二区三区| 五月天久久综合网| w w w.久久精品| 中文字幕日韩专区精品系列| 亚洲一区二区三区AV无码| 人人操人人操人妻人| 亚洲国产精品久久久久婷婷青年| 五月丁香狠狠爱| 17c在线成人免费A片观看| 国产农村妇女精品一| 97一本大道亚洲一区| 国产成人综合在线播放| 清纯唯美综合| a片自拍直播视频| 国产精品久久久久久久AV大片| 亚洲国产婷婷在线播放| 夜夜肏2021| 99只有精品| 超碰在线人人射| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 免费一级精品啪啪视频| 岛国小电影| 白 大 人妻 区 在线| 91亚洲黄色网| 国内毛片热久久思思热| 99热超碰| 日韩色女精品| 国产精品一区二区亚洲人成毛片| 2024人人操人人摸| 我中文字幕6区| 翔田千里A片一区二区| 日韩女模中文造逼| 先锋音影AV| 国产精品美女久久久久久网站| 亚洲成人无码影院| 亚洲五区熟女| 久96热在线观看视频| 丁香五月天激情| 亚洲清纯唯美| 国产欧美日韩精品中文| 草伊人高潮喷水超碰| 91成人18| 中文字幕一区 二区三四五 区日 日骚 | 操逼精品视频| 肏逼视频日本| 中文字幕视频2区| 亚洲黄色AV电影| 手机看片1024你懂的国产| 亚洲国产97| 欧美亚洲日本视频久久久 | 97看操| 草草电影院| 台欧久久精品视频| 色欧洲| 鲁鲁色综合网| 天美91| 美女尤物福利视频| 加勒比综合| 激情自拍 校园春色| 蜜臀AV午夜精品久| 久久精品国产免费观看99| 91国产在线精品| 国产精品麻豆免费视频| 91人妻视频| 三级色综合| 欧美在线啊啊啊| 久久精品店| 欧美 亚洲 综合 制服 另类| 色婷婷激一区二区三区 | 91精品大奶人妻| 成人九九| 五月花婷婷| 日韩电影在线观看网址| 久久久久久久久久久久久久久乱码| 国产精品点击进入在线影院高清 | 亚洲成人激情小说视频| 久草精品国产蜜臀| 人妻 中文 日韩| 亚洲精品97中文字幕| 亚洲αv一区二区三区| 日韩电影免费网站麻豆视频| 天天爱天天操| 日韩欧美操逼xxx| 98福利在线视频| www…国产操逼| 极品白嫩美少妇在地板上位骑射淫水泛滥| 美女高潮视频91| 国产亚洲精品美女久久久| 果冻传媒A片一二三区| 综合欧美日本三级| 操一操摸一摸| 欧亚日韩综合精品国产| 床上啊啊啊一区二区三区| 人人操人人摸人人骑| 色婷婷淫色网| 熟妇一区,二区,三区。| 亚洲 日韩 欧美 国产综合体| 亚洲av成人精品一区| 欧美少妇性乱| 成人情色一区二区| 精品v日韩欧美国产| 玖玖久久久| 裸体美女久久久| 成人日本视频人妻在线| 久草精品一区 | 欧美日韩妖精91com| 日韩一级欧美一级在线观看| 亚洲在线91| 校园春色宗合网| 日本人体九九九九九九| 国产强上视频在线观看| 黄色无码高清黄色无码网站| 久久人体一区二区| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 天无日色综合| 人妻精品一区二区在线| 无码一区免费在线不卡| 校园春色美腿丝袜 | 亚洲视频一二区| 人妻丝袜无 码视频专区| 日韩美女啪啪一区| 老司机福利青青草| 99少妇| 人人超碰在线观看黄| 国产精品色色| 五月婷婷六月丁香| 亚洲成人性爱在线观看| 岛国在线免费视频| 欧美性爱第一页久久| 青青草原av| 五十路人妻在线| 久久av网| 超碰免费人人| 亚洲天堂 视频你懂的| 国产熟女完整版中字| 肉动漫无遮挡h在线观看| 日本免费二区三区| 久久久久极品| 加勒比综合a∨| 免费无码婬片AAAA片直播色戒| 青青草公开在线免费不卡视频| 久久九精品| 啊啊啊啊操死我了| 伊人丝袜美腿高跟在线观看高清 | 加勒比中文av| 777超碰| 亚洲天堂一区二区| 日日骚av| 99999国产| 农村妇女精品一二区| 欧美丝袜亚洲| 麻豆 美女 丝袜 人妻 中文| 78精品| 综合久久99| 欧美性天天| 亚洲欧美一区二区网址| 免费av在线播放二区| 操人人| 岛国激情视频软件| 国产午夜激片Av毛片不卡| 少妇高潮特黄A片| 日本亚洲熟女视频| 91久热| 粉嫩国产精品久久粉嫩| 青青草视频久久久久| 中出789在线视频| 91暧暧| 超碰天天操你比| 久久久久幕乱码| 欧美精品黑人猛交高潮| 精品久久久久9999| 久久久性爱视频| 亚洲 欧美 另类 综合 偷拍| 啊啊啊啊二区好大| 欧美熟女逼久久久久久| 欧美色97| 乱伦日本中文自拍| h无码动漫在线观看| 国模精品娜娜一二三区 | 欧美日韩电影一区二区| 试看60秒| 亚洲熟女av中文字幕| 日韩免费中文字幕视频| 日韩一性一交一A片俄罗斯| 国产乱伦性爱AV| 国产天天骚| 天天热精品| 午夜精品久久久| 在线观看色视频| 天美精品av| 日本好吊色视频| 欧美色乱| 免费看A片毛毛片在线播| 亚洲性爱高潮影院| 欲女人妻性色av| 亚洲综合电影| 久久久久婷婷| 人妻 欧美 中文| 天天干18禁| 五月丁香拍拍激情综合三级| 日韩97超碰中文字幕| 亚州高清色综合| 激情文学88| 吖在线不卡一区二区国产剧情| 日韩操人| 嫩草 我啊~嗯~在线| 老熟女乱伦片| 中文字幕在线观看丝袜| 91在线丝袜| 26uuu国产亚洲综合| 激情四射五月天| 美女91色黄18| 天天操夜夜操狠很操| 精品91摸| 中文乱码字幕观看视频| 无码 有码 国产18p| 欧美少妇内射| 操操操五月天婷婷丁香影院| 天堂精品在线| 校园春色家庭伦理欧美激情| 精品无码久久久久久国产浪潮| 四虎AV在线观看| 欧美丝袜中文字幕07在线| 欧美日韩国产中文精品字幕自在自线| 久久熟妇五十路一区| 综合97| 欧美日韩国产在线| 日韩欧视频| 啊视频在线| 精久久久| 大香蕉免费乱伦视频| 亚洲熟女偷拍在线观看| 国模不卡| 中国熟女91| 激情综合二| 99热日| 日本五十路熟女一区二区| 日本精品人妻少妇一区二区| 欧美色就是色| 大香蕉伊人一区在线观看| 亚洲综合电影| 啊啊啊好湿久久| 日韩免费中文字幕视频| 一个人在线看的黄色电影网站| 久久色网| 欧美在线大香蕉| 在线观看成人性爱免费小视频| 神马午夜久久久| 亚洲精品国产专区在线观看| 欧美亚洲宗合色性图| 人人爱人人乐人人操| 打av高清| 九月丁香婷婷色| 99热导航| 亚洲日韩精品一区视频在线| 五十路熟女在线不卡观看一区二区| 亚洲精品中文字幕一区在线视频| rivers-china.com| 精品国产乱码久久久久久久久1| 九九九九一区| 玖玖视频在线资源一区二区三区| 日本韩高清无砖码22o| 亚洲欧美大| 欧美福利视频啊啊啊啊| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 国产97在线播放| 深夜啪啪啪视频免费| 伊人网青青| 亚洲精品人伦一区二区| 五月婷婷五月天| a片久久久久久久久久久久 | 亚洲第一无码播放立川理惠| 国产精品一二三| 九九色色| 乱伦图av| 97超碰美女| 久久日本熟女精品一区| 9999久久久久| 国产精品永久免费10000| 96国产污污污丝袜| 五月婷婷六月丁香| 国产51色综合久久免费| 97鸡把在线视频| 国产 大胆 对白| 久久人妻视频网| 午夜男人av| 91伊人| 热热色色综合| 日韩97视频!在线| 一区二区娱乐网站| 无码直播久久久| 一本色道久久综合精品婷婷| 嗯嗯啊啊好疼| 91久青| 免费一级视频特黄色大片| 亚洲天堂五月天国产| 欧亚三区动漫| 啊啊啊啊好大好硬啊啊啊啊啊| 理论久久婷婷网 8| 国产日韩在线播放| 手机在线免费看的av| 国产精品乱码久久久久| 五十路人妻在线| 欧美综合色站| 嗯嗯嗯啊啊啊在线免费观看| 成人黑料社久久| 日本精品五区| 人妻色情天天操| 九九九九欧美| 亚洲视频一二区| 中文字幕视频在线观看一区二区| 国产精品视频一区二区三区八戒| 国产精品高潮呻吟av久久4虎| 亚欧洲日韩国产精品| 九色 蝌蚪 熟女自| 国产久久男人天堂| 久久精品中文| 精品性爱久久视频| 中文字幕在在线观看网站| 六六久久日韩不卡| 五月激情综合网| 成视频在线观看免费看| 乱伦日本色图AⅤ| 久久av一级av少妇av高潮| 嫩草美女久久| 亚洲精品少妇| 亚洲图片欧美色| 日韩大香蕉| 天天综合网网欲色| 亚洲天堂久久久久久粉红视频| 92一区二区| 少妇久久久| 看日韩黄片| 51国产午夜精品视频| 不卡av免费在线网址| 九九无码| 屁股久久久久久| 日本视频在线中文字幕| 91欧美经典| 久久老女人| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 日本超碰在线国产一区| 久久久com| 超硑97精品| 青青青艹在线视频| 97国产精品久久久久| 人妻少妇无码| 性91| 免费αV在线视频| 日韩精品人妻一| 亚洲Av无码成人精品国产| 91碰碰碰| 亚洲AV资源| 另类视频在线| 后入人妻无码| 97爱综合| 亚洲第一精品在线视频| 午夜120视频在线观看| 久久老子无码午夜伦不卡| aaa一级黄片| 日韩啪啪视频| 一区,二区,三区网站| 蜜臀AV一区二区三区激情综合| 激情亚洲天堂| 久9爱精品| 天堂v无码免费视频| 精品成人动漫一区二区| 婷婷色色五月| 久草综合视频| 狠狠操狠狠爱| 丁香六月激情| 丁香六月啪| 国产高清不卡视频| 91成人亚洲色图| 成人免费福利在线观看| 男人的天堂2010| 欧美日韩国产中文精品字幕自在自线| 日本123区操B视频| 操人妻丝袜高跟| 久久综合久色欧美综合狠狠| 91 丝袜在线播放| 93人人操人人| 97二区四区| 中文字幕免费看| 免费精品无码一级毛片牛牛影视 | 国产精点久久久成人| 久久国产精品91| 天天躁狠狠躁av| 久久AV无码AV| 亚洲欧美日韩夜夜| 性性欧美| 在线中文字幕视频| 91人人臊| 中文字幕伊人| 日韩人妻有码免费视频| 男人的天堂亚洲| 午夜精品久久久久久久99| 国内毛片欧美香蕉精品| 99欧美| 天操天操夜操夜月月年年操操| 亚洲人妻中文在线视频| 成人欧美一区二区三区黑人一| 欧美激情久久久久| 美女诱惑一区| 91色婷婷综合久久中文字幕二区| 超碰精品| 91一区二区三区蜜桃| 亚洲AV无码成人精品久久| 97爱b| 超碰免费人妻人人| 99成人| 啊啊啊啊啊啊啊网址在线观看| 99亚洲国产精品色一区二区三区| 色婷婷五月天| 国产精品探花色| 亚洲综合色网| 欧美伊人电影| 五月天激情小说| 夜夜嗨一区二区三区三州加勒比| 丁香婷婷九月| 色香av| 老女人日韩美91| 操国产逼| 熟女网站最新| 女人爽到高潮潮喷18禁网站| 欧美的精品的视频| 内射日韩大臀美女| 久久精品久久九九精品| 91女优在线观看| 丝袜美腿制服人妻二区中文字幕| 天美麻豆黄色录像| 日本精品一区二区中文字幕| 国产AV线| 无遮挡猛进视频免费无限观看 | julia中文字幕在线观看| 欧美97爱| 超碰性爱97| se吧提供91精品国产91久久久久久 | 午夜人人操| 亚洲美乱| 精品久久一区二区三区四区五区| 国精品一区二区三| 国产野战露脸在线播放| 欧美韩国你懂得在线| 国产超碰人人操| 午夜舔阴达高潮视频免费看| 国产精品嫩草久久久久| 天天综合AV| 国产精品无码久久久久2025| 伊人久久在线视频观看| 午夜福利 成人 91| 9色国产精品一区粉嫩| 日韩天天综合| 欧美日韩国产人人| 亚州综合图片| 欧美综合 站| 日本幼女18+| 日韩中文字幕国产| 久久九九热| www久久99| 日韩图区| 亚洲欧美校园另类春色| 草草影院日本第一页| 97se亚洲综合自| SUV一区二区在线看| 美女刺激久久国产欧美| 欧美精品成人在线播放| 亚州欧美色图| 91模特在线观看| 日日夜夜青青草母狗| 五月天开心网| 两性色网| 免费国产电影一区二区| 极品色综合| 熟女久久久| 精品久久久久久久久久久久| caorenqi shipin| 美国一区二区免费视频| 欧美区亚洲区偷拍区| 三级色影综合网| 自拍第一页| 麻豆国产成人精品| 一道本东京热加勒比一区二区三区| 搡老人老9丨女老熟人| 9999久久久久| 国产小黄片在线免费观看| 午夜成人爽爽爽爽A片李冰冰| 激情婷婷丁香网| 一本久久精品中文字| 欧美无圣光在线| 人妻碰碰碰碰碰碰| 七久久久| 91欧美| 自偷自拍的亚洲视频| 综合欧美日韩在线观看| 精品亚洲国产成人精品| av在线播放国产一区| 一区二区三区美女超清| 亚洲色图欧美色图另类图片| 99国产女人| 91亚洲网站| 果冻传媒A片麻豆熟妇人妻| 综合大香蕉美。| 蜜臀无码一区二区| 98超碰日本| 另类专区加勒比| 韩日自拍| 我爱操| 性高潮久久久久久久久久久| 亚洲有薄码区久久在线一区| 99色在线| 国产天天骚| 少妇专区一二三四五| 色999偷自拍拍| 国产欧美伊人| se吧提供国产乱老熟视频胖女人 | 成人热久久精品| 亚洲视频一二区| 福利天堂| 懂色av中文字幕| 日本布卡一区二三区| 国产精品久久久久婷婷二区次| 日日躁夜夜躁狠狠躁超爽| 国产精品自拍视频| 欧美一级黄色免费专区| 91搞逼视频| 婷婷午夜成人色中色| 一区三区啪啪| 日本三级久| 日韩99神马视频片| 天美传媒av一区二区| 亚洲综合色图欧美| 日本一道在线播放高清| 午夜福利一区二区影院| 成人激情无码在线视频| 一区二区娱乐网站| 69人妻人人揉人人躁人人精品| 爱爱动态试试看6 0秒| 青青操视频在线| 亚洲欧美洲综合| 久久透逼视频| 亚洲精品a人片在线观看视| 婷婷五月天成人网| 一区二区三区四区久久视1| WWW美腿丝袜香蕉中文| 男人综合网| 乱伦色图网址是多少| 视频分类 国内精品| 天天插天天舔舔天天干| 91超碰在线播放| 综合色好色| 国语国产操逼伊人AV网| 五月激情小说| 日韩精品怡红院| 蜜臀网 一区| 欧美一级久久久久久久大片动画| 99性视频| 91日产欧美| 久久超碰97| 日本性爱少妇| 日产中文字幕2020| julia国产在线 | 神马九九九| 国产成人91一区二区三区| 精品小视频在线| 91老司机精品| 亚洲最新中文字幕免费| 116美女午夜| 美女十八禁| 国产成人综合在线播放| 欧美嫩性色| 亚州高清AV| 91艹B视频| 色九九九| 91老司机在线| 亚洲aV无码成人在线观看| 欧美日韩一干二干| 国产深夜福利| 欧美色婷婷| 99精品综合久久久久五月天| 影音先锋日本一区二区| 伊人综合色网| 加勒比色99999| 激情综合网五月婷婷五月天| 欧美三级免费伊人| 亚洲天天综合| 色色色综合| 欧洲亚洲人妻无码高清久久三区四区| 日本操大逼| 9精品在线| 无码高清少妇久久| 久久久不能久久久久| 久久久久白虎| 国产女人成人精品视频| 亚洲诱惑天堂| 天堂无码精品国产久| 中文字幕十五区| 大香蕉免费3| 欧美精品丝袜久久久中文字幕| 日韩97P| 中文字幕第页| 九九九九九精品| 久久久A∨| 俞拍久久国应视频| 日日夜夜干| 精品九九九九九九| 色综合美国| 久久夜夜| 91大神电影天堂| 亚洲AV麻豆Aⅴ无码电影一| 乱日视频| 欧美性生活男人的天堂| 天堂国产AV| 日韩美女啪啪一区| 久久久不卡区一区二区三区久久久| 蜜乳AV免费观看| 青青草五月天| 神马久久久久久伦理片| 青青草久久| 国产精品熟女丝袜一区二区| 伊人欧美大香蕉视频| 伊人激情| 中文字幕av亚洲精品| 伊人成人情色综合| 狠狠操官网| 成人久久久精品| 国产精品久久久三级无码| 精品国产乱码久久久久久久| 99啪啪| 97爱爱爱| 久久色一区二区| 国产亚洲精品第一最新| 超碰人人干天天射| 偷窥自拍亚洲色图| 日本人妻中文字幕| 亚洲91射| 日本精品一区三区| 国产亚洲深夜激情| 2019亚洲男人天堂| 26uuu国产| 秋霞免费无码视频日韩A片| 性爱欧美五月| 国产综合操逼高清| 九九热AV| 操淫穴亚洲五月丁香 | 国产一区二区三区不卡手机在线| 国产中文字幕在线点播| 少妇激情AV| 啊啊啊啊啊啊啊国| 3D污黄视频在线观看| 一区二区视频在看| 伊人久久大香线综合无码| 欧美日韩操逼嗦吊| 99精品国产户外露出| 色香综合天天影视综合| 淫淫总合网| 亚洲色图日韩精品| 国产一级高清免费观看| 青青草无码视频| 青娱乐亚洲热| 中日韩欧美精品无码AⅤ一区二区| 日韩情色一区二区| x97av| 国产夜夜艹| 桃花色涩综合影院| 天天日天天搞天天干| 热热色中文无码| 免费亚洲国产精品久久一区| 亚洲欧洲小说图片视频 | 日韩传媒在线| 伊人色综合网| jizzjizz欧美| 日韩啊V| 超碰在线91| 后入式999| 日本大香蕉| 久都青青视频| 欧美黄色片AAAAA| 日本三级一区二区 在线| 日韩欧美加勒比| 午夜操一视频一区| 亚洲人码13| 天天天乱色综合全| 色穴精品| www.色婷婷| 久久久久久AⅤ无码免费肉站| 激情 欧美 亚洲 小说| 激情欧美97| 久九九九九九九九热| 九9热伊人| 人妻酒店出差被中出免费在线播放| 亚洲 欧美 天天| 996热| 天天做日日爱夜夜爽| 翔田千里无码中出中文字幕| 免费试看60秒| 天天伊人| 精品国产乱码久久久A| 天天综合网合集91| 欧美97视频| 激情终合网| 成人日韩中文字幕| 嗯嗯嗯,草死我| 91 丝袜在线| 欧美精品成人亚洲| 五月婷婷丁香| 天天干少妇| 婷婷五月天丁香| 超碰在线99| 色婷婷成人| 99在线精品视频| 久久99热这里只频精品6学生| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 国产特级毛片AAAAAA高潮流水| 啪啪性爱免费视频| 国产AV线| 激情抓乳插进去啪啪啪日韩 | www色婷婷| 国内三级自拍小视频在线观看| 亚洲欧美日韩精品久| 国产精品自拍欧美在线| 在线观看精品国产免费| 伊人久久大香大香线蕉中文| 色官网在线| 熟女乱伦二区| 欧美色图天堂在线| 亚洲青青青视频在线| 亚洲一二三精品久久网| 偷拍超碰| 中文字幕伊人| 色综合大香蕉| 久久九色| AV一起草在线| 黄片无码在线制服|