久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码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
返回資訊列表
亚洲欧洲另类| 熟妇女伦乱视频视频| 国产1024在线播放| 国产成人天堂| 欧美黄页在线| 是还免费视频1727我| 久久999久| 亚洲成人久久一区二区| 97国产人人| 97色欧州| 97色伦欧美| 操逼逼中文字幕| 亚洲毛片基地专区| 97视频在线观看网站| 九久9热| 亚洲无吗在线视频| 亚洲成人在线高清| 亚洲一区日韩精品中文字幕| 欧美大的香蕉有线电视视频| 精品制服美女中文一区二区三区| 国产精品乱码久久久久久久久久久久| 午夜寂寞欧美| 国产1769在线| 日本色婷婷| 精品区国产区一区二区三区| 熟女精品一区二区三区| www.99色| 欧美成人精品一区二区三区| 校园激情狠狠四射| 一区二区三区四区久久视1| 亚洲人妻久久久| 国产25页| 色色青青久久| 男女啊啊啊啊啊| 黄页网站成人免费| 天天综合~91| 欧美日韩国产中文超碰| 亚洲男人的天堂亚洲| 麻豆国产视频精品观看| 色就色综合| 免费αV在线视频| 欧美亚洲天堂| 尤物黄色在线观看网站| 少妇高潮对白在线观看| 日本熟女中文| 99色日| 粉嫩小泬久久久一区二区| 97爱b| 一本久久精品中文字| 偷拍在线观看视频| 3P丝袜熟女 色综合| 亚洲熟女人妻中文字幕一区二区| 91精片| 亚洲自拍天堂| 狠狠干狠狠色| 久久久99999久网站| 欧美日韩美女精品久草一区二区三区| 九九久精品| 日韩日本欧美在线观看| 久操网视频| 成年人性爱日韩| 97国产色综合| 日本三级精品| 亚洲国产ⅴ高清在线观看| 日本3级一区二区免费| 久久久草成人网站久久久草成人久久久草久久久 | 亚洲91亚洲| 久草毛片| 丁香五月色| 九九热免费国产视频婷婷伊人| 国产高清不卡视频| 白丝一区| 啊啊啊好爽快点啊啊啊嗯嗯| 日韩欧美天堂| 18禁中文字幕| 精品一区二区三区四区女| 久久99干一本高清| 亚洲乱熟女一区二区三区大香蕉| 91美女在线视频| 欧美少妇色图| 日韩精品区二区三区不卡| 亚洲精品骚逼| 久久黄色性爱视频| 欧美少妇高潮久久91| 国产综合日韩伦理| 色女女女导航| aaa亚无码专区| 中文字幕在线免费观看2| 北京美女一区二区| 无码人妻精品一区二区中文 | 国产福利小视频高清在线观看| 天美国产三级传媒| 久久午夜色播影院免费高清| 嗯嗯嗯啊啊啊在线免费观看| 懂色aV一区二区天美传媒| 国产一区二区三区影片| 啊啊啊水好多| 综合激情五月丁香| 久久精品超碰| 久久天天性久久伊人| 91老女人| 道久久五香丁月婷婷激情综合| 久久国产逼| 夜精品久无码| 激情五月天网| 久久性爱视频免费看| 偷看洗澡一二三区美女| 国产久久天堂资源| 免费农村成人少妇人妻Aa一区二区视频| 99无码| 91人人臊| 精久久久| 精品一区二区久久| 日韩猛交| 亚洲国产另类在线中文| 大香蕉免费乱伦视频| 大香蕉 222| 精品熟女呻吟久久91| 精品国产www久久| 红桃视频高潮| 中文字幕乱码人妻二区三区| 97舔舔| 亚洲,欧美,综合网| 五月色网| 蜜臀AV午夜精品久| 亚 欧 美 综合| 好色美女九七第一页| 色欲av一区二区三区蜜芽| 成人在线视频二区| 久久草草亚洲蜜桃臀| 91麻豆天美国产欧美日| 涩综合导航| 久久午夜色播影院免费高清| AV女资源| 国产区在线| 清纯唯美综合| 99色色网| 玖玖大干人妻| 日韩av色图综合| 91视频精品| 啊啊啊好爽快点啊啊啊嗯嗯| 婷婷丁香激情| 岛国小电影| 精品性爱| 伊人九九| 日韩pv中文| 久久久久久久| 春色校园综合网| 亚洲AV成人精品网站在AV| 亚洲老熟妇xxx| 花花AV导航| 色噜噜狠狠色综无码久久合欧美| 亚州Av天美传媒| 九九99精品| 午夜福利合集| 插入逼91| 国内精品久9| 中文字幕人妻色偷偷久久皮 | 国产精品久久久久久亚洲色欲| 国产成人精品网站| 亚洲天天操| 天堂v无码免费视频| 欧美 日韩 亚洲 春色| 国产精品呦一区二区三区| 久久黄色视频一区二区三区| 色偷综合| 性爱乱伦网址| 欧美黄片免费在线观看视频| 中文字幕一区二区视频在线观看 | 四季AV一区二区凹凸精品小说| 蜜乳视频网站| 午夜福利合集| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 亚洲视频中文一区| 婷婷激情丁香| 国产精品高潮久久AV| 爱我干综合| 久久男人天堂| 中文字幕久久亚州无码| 久草婷婷| 乱理日韩中文| www.99热| 三级三级三级a级全黄三| 九t超碰| 男人把坤坤插入女人的下体 | 亚洲天天自拍| 91热| 大香蕉综合在线| 日本不卡三级网在线播放| 日韩国产乱子伦App| 伊人国产成人av网站| 亚洲久草AV色图| 青青草亚洲一区 | 极品AV网站在线观看| 99热综合| 加勒比无码毛片| 蜜臀99久久国产| 久久五月丁香| 99色在线| 九色婷婷| 欧美78p| 大香蕉99热| 国产真实野战在线视频| 蜜臀99精品国产高清在线观看| 26UUU欧美日本| 久热久| 先锋音影AV| 天天综合欧美黑人| 欧美精品日韩久久久九| 欧美亚洲激情小说| 天天天天天天天天天天干美女| 大香蕉欧美| 中文字幕后石码四区五区| 91麻豆天美国产欧美高潮| 色噜噜人妻丝袜AV资源| 久久香蕉超碰97国产精品| 人妻久热在线| 精品射1999| 亚洲色性情三级| 在线人妻熟女一区二区三区四区五区| 色综合色欲色综合色综合色综合| 91黑丝在线播放| 国产精品岛国片在线观看| 中国操逼无码| 欧美成人A√在线一区二区| 免费无码婬片AAAA片直播色戒| 天天干人人看综合| 乱伦熟妇一区二区| 黄色大片免费在线| www网站黄| 日本日皮视频逼| 日本一级性爱| 男人的天堂啪啪| 99啪啪视频| 玖玖蜜臀资源网| 日韩美女高潮喷水视频| 欧美女同在线| 超碰天天去日穴| 婷婷中文网| 蜜臀久久99精品| 亚洲天堂一区| 99久久精品国产系列| 男人的天堂kva| 欧美精品成人一区二区在线观看 | 日本色婷婷| 啊啊啊不要嗯嗯在线观看| 美国人人操人人操| 欧美一区二区| 婷婷色一区| 在线观看中文字幕| 六月激情婷婷| 成人情色一区二区| 亚洲色综网| 校园春色之综合网| 天天超级碰碰碰| 豆1无夜无码| 国产青青综合伊人| 人人贴人人摸| 能直接看AV的网站| 欧美亚洲20p| 91精品人妻五十路| 九九无码| 国产一级高跟丝袜| 野狼激情网| 老鸭窝黄色视频网站| 熟女熟妇一区二区三四区| 亚洲精品国语在线播放| 亚洲精品亚洲人成在线麻豆| 免费的av网| 九九九精品一区二区无码| 91丰满| 小视频国产| 色九九九九久| 床戏久久久av一区二区麻豆| 99ri视频| 亚洲视频精选| 国产三级片在线观看| 国产成人精品必看| 亚洲天堂电影精品一区| 91色图| 美女被艹尤物视频| 天天透伊人| 亚洲图片视频小说| 艹少妇网站| 麻豆国产av网| 性色综合网| 久久久精品电影| 99日韩| 另类专区加勒比| 激情综合五月| 探花激情视频| 日本女厕偷拍| 国产精品原创巨作?v网站| 大香蕉五月天| 东北女人性交| 国产精品久久久鸭无码的功能| 欧美一二三区四五区| 精品然女一区二区| 婷婷五月天激情网| 国产日韩色综合| 综合色区偷拍| 午夜综合在线| 久久综合久久综合人久久夜精品| 日本 欧美 国产一区| 密乳视频在线| 极品肉射| 99在线精品观看视频中文| 欧美精品另类人妖xxxx| 亚洲Av无码成人精品国产| 18禁无码永久免费无限制| 欧美色涩| 国产美女自拍视频| 国产精品午夜精品| 蜜桃视频一区二区三区在线观看| 尤物黄色在线观看网站| 欧美九九爱| aa片毛片| 久草精品视频| 综合久| 啪啪综合网| 欧美制服另类丝袜| 久久受www免费人成| 中文字幕AV片| 91久久婷婷| 婷婷伊人五月| 午夜天堂精品久久久久91| 久久一区二区蜜桃| 欧美91在线+|+欧美| 久久一二区四| 亚洲天堂AV在线播放| 入口操逼网站| 97超碰超碰| 天堂麻豆天美| 99在线精品观看99| 久久伊人亚洲AV无码网站| 青青欧洲黑| 欧美99热| 亚洲av综合色| 啊啊啊轻点在线观看| 精品一区二区三区蜜桃臀赵总 | 一级做a爰片性色毛片久久| 久久久久久91香蕉国产| 亚洲男人久久综合天堂| 亚洲色图欧美色图在线播放| 国产人伦精品一区二区三区| 激情五月天丁香社区| 欧美性暴力| 欧美日韩少妇色情| 国产精品电影| 欧美成人A√在线一区二区| 又摸又舔在线观看网站| 99免费在线视频| 亚洲国产91精品一区二区久久| 激情在线青青操| 1956日韩精品| 精品超碰中文在线| WWW4虎| 天天视频黄| 亚洲欧美综合网站| 黄色片G G G| 久久超碰爱| 国产精品久久伊人| 亚欧性爱无码| 精品一区二区三区国产| 婷婷爽人人婷婷爽视频| 青草伊人网| 啊啊啊啊二区好大| 欧美 传媒 麻豆 日韩 偷拍| 九九久久精品| 一起草av| 9999久久久久| 久久婷婷五月| 婷婷色播婷婷| 国产精品视频精品一二| 亚洲一区日韩精品中文字幕| 一起草在线视频| 久久久久久裸体 | 欧美熟妇精品黑人巨大91| 国产第11页| 男人的天堂2018.| 99色在线视频| 亚州一区二区成人片免费| 狠狠操,使劲操| 国产免费内射视频| 日日躁天天躁狠狠躁| 午夜AV污污污| 日日日日日| 黄色激情电影在线观看| 强被迫伦姧在线观看无码网站| 久久久亚洲| 精品黄色电影| 精品九九九九九| 另类天堂| 人妻精品视频一区二区三区| 97久久久网站| 91春色| 欧美精品99久久久**| 巨爆乳肉感一区二区三区竹菊影视 | 亚洲一区二区性爱电影| 亚洲精品视频二区| 精品一区二区三区四区外站| 午夜超碰| 亚州乱码中文字幕综合久久久| 丰满人妻一区二区三区大胸懂色 | 亚乱色| 日韩三级在线观看网站| 国产v片在线免费观看| 无码久久亚洲高清,| 欧美区亚洲区偷拍区| 国产无码精品成人| 亚洲综合另类小说色区亚洲成av人片在www| 欧美视频一| 特级特黄一级毛片免费| 日本精品一区二区中文字幕| 五月综合激情| 久久久精久久久| 日本新免费二区三区| 久久6热精品99视频| 欧美国产一区二区三区麻豆传媒| 中文字幕人乱码中文字的预防方法 | 亚洲精品日韩国产欧美| 久久天堂婷婷网| 欧美页片| 亚洲图片偷拍欧美| 免费成人自拍视频在线| 爱av免费| 中文一区二区婷婷视频| 伊人在线大香蕉视频久久| 欧美日综合| 久久久新亚洲AV| 干干干天天| 五月丁香综合| 97操综合| 韩美日操逼| 日韩一性一交一A片俄罗斯| 99自拍视频在线| 亚洲 图片 欧美 色图| 欧美激情黑人| 17c嫩草51久久91嫩草| 亚洲AV无码AV吞精久久久久 | 91青青在线| 情趣丝袜无码操逼视频| 大香蕉久久| 少妇九九九九| 国产又黄又粗的视频| 日本东京热久久久电影| 欧美系列在线一区二区| 蜜桃视频精品一区二区三区| 久久中文字幕女同性恋一区| 国产精品露脸在线观看| 丁香五月性| 日韩大香蕉精品在线视频| 人人操人人摸人人骑| 日韩 欧美 另类 人妻| 蜜桃久久久久久久| sewuyueav| 欧美精品久久久久久久久88| 无码久| 69麻豆天美| 色999;丁香五月| 国产精品午夜福利视频| 一区二区播放| 香蕉人人操tv| 亚洲色悠悠久久88| 岛国色情视频在线观看| 丝袜内射| 中文字幕第二页| 99超碰网| 人妻天天夜夜爽一区二区| 亚州一区二区| 日韩欧美天天爽爽爽天天爽爽| 亚洲双插| 首页亚洲国产高跟丝袜诱惑视频 | A一区片| 伊人久久青青草| 青青草这里只有精品| 日本中文字幕在线视频| 久久久精品一区二区| 国产精品自在线发布| 国产亚洲色停停久久99精品91| 久久免费精品视频免一| 最新加勒比丝袜在线| 欧美日韩人妻精品系列一区二区三区| 蜜乳av首页| 亚洲欧美综合图片| 九九av| 亚洲精品九九九| 超踫中文字幕| 蜜臀99久久精品久久久懂爱| 久艹伊人精品综合在线| 国产一区免费午夜视频| 狠操91,com| 欧美成人一级免费电影| 婷婷成人五月天| 欧洲综合色图| 亚洲AV成人无码一二三久久| 欧美黄片欧美黄片xxx| 天天日日夜夜| 五月天伊人网| 色老大| 曰本人妻人人澡人人夹| 强奸乱伦AV一天堂网| 天天影视综合网欧美精品| 国产吹潮女在线观看| 国产高清吃奶免费视频网站| 精品成人女人久久| 九九九久久久W精品| 超碰在线欧美性爱激情| 欧美性,亚州色| 呦呦影院| 一直超碰| av片在线观看免费播放| 96久久久久久久| 久操操| 立川理惠被中出无码| 四虎 精品 WWW| 日本成人在线不卡一区二区三区 | 国产小视频91| 四虎精品永久在线观看| 欧洲熟妇xxXx欧美老妇裸体| 欧美爱国产综合、| 91黄射| 久久丁香| 最近2018中文字幕在线高清第一页| 4141514逼喷水三级片| 国产在线强奸视频| 国产精品对白自产拍| 色播五月丁香| 国产亚洲精品无码三区| 4tube欧美女厕所| 五月天丁香欧洲日韩| 日韩精品在线视频在线观看| 一级黄碟| 五月婷婷激情综合| 九九热只有精品| 男人a天堂手机在线版| 激情情色五月天| 国产一区96在线| 中文字幕天堂在线| 久草草一二三四区久久| 97av在线视频| 免费在线黄片视频| 青娱乐亚洲自拍| 激情五月天中文字幕色| 正宗无毛一线天嫩逼| 97超碰久久色| 福利天堂| 超碰人妻中文在线| A啊啊在线观看| 99久久无色码| 日韩美一区| 东京热亚洲一区二区| 欧美中文狠| 特级大荫道BBwBBwBBW| 精品久久久av| 大香蕉天天看妹子| 久久日本熟妇熟色高清| 亚洲精品成人激情在线| 激情婷婷丁香| 国产精品久久久久久夜夜夜| 99精品丰满人妻无| 天天影视激情欧美| 台欧久久精品视频| www.人人cao| 男人的天堂不卡一区二区| 激情专区综合| 992大香蕉| 操逼天美3区| 欧美综合区| 欧美一级久久久久久久大片动画| 性色亚洲| 九九九九免费视频| 熟妇熟女亚洲天堂网| 欧美亚洲日韩人妻在线观看| 中文字幕老熟妇黄色视频| 日韩乱中文 | 国产精品高朝久久久久久久| 国产伊人精品在线| 狠狠色噜噜狠狠狠狠2018| 黄色激情电影在线观看| 懂色中文一区二区三区| 色99视频| 欧洲精品一区二区三区| 精品无码久久| 精品中文字幕一区二区| 久久本道| 夜夜夜爽www精品视频| 亚洲欧美黄| 91东北熟女| 久9热| 美欧老女人97| 97爱| 青青青操| 老熟女网站| 涩五月婷婷| 欧美黑人168页欧美黑人167| 2019天天干| 五月婷婷性爱| 一级岛国大片| 亚洲二区精品在线观看| 国产AV久久久蜜爱影集| av激情亚洲五月天| 自怕偷自怕亚洲精品| 精品一区二区三区蜜桃臀赵总 | 国产欧美日韩在线不卡第一页| 首页亚洲国产高跟丝袜诱惑视频 | 五月天婷婷在线看| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 老熟女网站| 97人人模人人爽人人| 密臀在线免费观看| 天天综合网日韩| 日韩性爱电影一区| 好爽要喷了| 丰满的三级少妇欧美久久久| 青青草国产亚洲精品久久 | 日韩亚洲精品一区二区| 传媒免费一区二区三区| 亚洲黄片免费在线播放| 加勒比少妇AV婷婷六月天超碰超碰| 精品69网| 亚州高清色综合| 精品性爱一二三区| AV中文在线| 欧美亚洲天堂| 久久久久日本视| 成人怡红院| 性爱av在线免费观看| 大香蕉十区| 久九九九| 97福利视频| 久久久久久免费电影| 久久久99免费| 日韩有码一区三区| 婷婷丁香五月天综合东京热| 美女91色黄18| 美女97超碰| 一区三区啪啪| 亚洲图片小说欧洲| 天天日B夜夜干B时时操B| 先锋精品av色鲁| 久久久久女教师免费一区| 亚洲91在线播放影院| 久久国产精品,久久国产| 亚洲精品97中文字幕| 啊啊啊不要好疼视频| 天天日B夜夜干B时时操B| 天天操人人操狠狠插| 97久久综合网| 久久久久久99999国产精品| 国产精品色约约| 久九干| 国产97色在线| 欧美 综合 亚洲| 一本色道久久综合熟妇| JIZZJIZZ亚洲女人被躁| 偷拍伦理视频| 伊人一级免费黄片| 午夜综合在线| 亚洲色综网| 嗯嗯啊中文字幕| 99操逼| 色一情一乱一乱一区91Av| 天天天天天干夜夜夜夜夜操| 91黑人无码激情在线| aⅴ日韩成人电影av在线免费看av大全| 久久99国产精品| 亚洲黑人在线| 精品久久无码午夜福利| 中文字幕精品一区欧美| 狠狠爱综合网| 婷婷色色五月天福利| 日韩熟女操逼| 午夜寂寞欧美| 欧美日韩国产传媒在线精品| 亚洲少妇诱惑| 探花一区在线| 四虎国产成人精品免费一女五男| 成人在线永久| 国产盗摄美女如厕大神作品在线观看| 中文字幕精品乱码| 久草男人天堂| 在线观看亚洲专区| 91美女高潮| 国产丝袜美女在线一区| 色情五月综合婷婷| 五月天激情综合网| 九九九九九九视频免费| 二级毛片| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 欧美se综合| 嗯嗯嗯啊啊啊在线免费观看| 中字幕人妻一区二区三区| 国产尹人在线视频免费| 青青草啪啪网| 九九热免费国产视频婷婷伊人 | 超碰95| 飘花国产午夜精品不卡| 丰满人妻一区二区三区| 一级啊性爱在线视频| 色爱欲亚洲| 熟妇人妻一区二区三在线| 成人怡红院| 精品精品精品| 日本操逼视频不卡直接放| 欧美精品,四区。五区| 国产精品成人午夜福利| 日韩免费性爱视频在线观看| 97超视频在线观看| 国产AV激情无码久久无码| 老鸭窝成人| 91中文精品日韩欧美在线| 国产农村妇女毛片精品久久| 欧美一区二区观看在线| 国产中文字幕在线| 2020国产精品| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 久久久久久波多野吉衣高潮| 网友自拍第一页| 九九视品黄色| 日本人妻伦在线中文字幕| 天色综合网| 亚洲欧洲日韩天堂av| 综合天天。| 99热精品在线播放| 屌妞视频久久久久久久| 又大又长又粗又爽又黄| 91精品少妇搡搡搡| 免费观看有码高清视频| 青娱乐淫乱1314| 中文字幕欧美日本乱码一线二线| 人妻精品一区二区在线| 97超碰中文在线| 久久视频少妇美女| α√在线| 亚洲精品国产精品成人| 亚洲人精品久久久| 中文字幕啊啊啊在线观看视频| 国产精品人妻无码久久久老鸭窝| 天天日美女的B| 大胆91| 国产免费一区在线观看| 久久久久亚洲三级电影| 91高清日| 伊人操你| 99久久国产精品免费高潮| 久草成人影片| 青青草精玖玖69精品| 婷婷久久五月天| 黄色激情电影在线观看| 淫荡网址| 欧美丝袜中文字幕07在线| 久久一二三四| 啊啊啊男女| 大香交| 亚洲综合20p| 热热色国产一二区AV| 久久久蜜桃一区二区三区| 秋霞午夜视频一区二区| 大香蕉伊人网WWWn0n| 久久无码电影| 欧美亚洲素人制服精品| 99久久久久久久久| 亚洲欧美在线观看无码| 99999久久精| 天堂亚洲精品| 天天操人人操骚逼网站| 天堂精品在线| 五月丁香婷婷综合| 天天干天天狼在线视频| 18啪啪手机免费性爱| 亚洲激情欧美色图 | 在线另类| 一区中文字幕二区日韩| 在线观看A啊啊啊| 91在线视频免费中出| 色哟哟-国产专区| 青青草在线成人视频| 9/A片 | 国产无马视频| 无码人妻丰满热妇又大又粗| 韩日性爱av| 99热只有这里有精品| 五月婷婷久久综合| 搡老女人老妇女老妇老熟女怎么读| 蜜臀在线免费观看在线免费观看| 亚洲 中文 女同| 欧亚性爱在线视频| 久久久999网站| 国产女人高潮视频| 成人无码欧美一级A片狼牙直播| 国产Aα| 色九九九综合| 国产操操日韩三级黄| 99只有精品| 无码WWW免费视频网站| 亚洲高清男人天堂| 亚洲一区操| 97 超碰 人人做 人人爱| 久艾草在线精品视频在线观看| 97欧美精品综合| 亚洲一区日韩精品中文字幕| 欧美色图亚洲特色| 国产亚洲日韩在线三区黑人| 国产一区二区精品在线视频| 青娱乐国产精品| 久久久精品九| 六六久久日韩不卡| 极品销魂美女一区二区| 啊啊啊啊二区好大| 无码WWW免费视频网站| 无码二级三级| 开心激情婷婷| 亚洲自拍偷拍视频在线 | 岛国不卡超碰护士AV在线播放| 国产熟女免费观看久久| 久久精品噜噜噜成人看免欧美大片| 99热精品免费| 成人无遮挡毛片免费看| 日本黄色XXX| 亚洲色吧网| 日本韩国国产精品一区| 影音资源男人日韩| 欧美熟爽综合| 91在线视频免费播放| 色综合大香蕉| 九九成人精品| 色婷婷影视| 蜜乳视频网站| 青青草公开在线免费不卡视频| 亚洲色图久久成人| 这里只有精品视频在线观看麻豆| 日韩无码第3页| 美腿丝袜偷拍亚洲欧美| 国模少妇一区二区三区| 蜜臀久久99精品久久久久久-DVD原版全| 欧美性,亚州色| 3p国产欧美99热| 91AV入口| 97久久超碰日韩精品| 国产精品对白内射| 精品一区二区亚洲国产| 影音先锋每日最新资源在线观看| 亚洲高清在线se| 国内偷自视频区视频综合| 撸无码不卡免费视频| 欧美色一二三| 97在线免费看| 日韩午夜啪啪视频| 1人人看人人摸人人操| 日日躁夜夜躁狠狠躁超爽| 美欧老女人97| 熟妇高潮一区二区免费视频| 99精品成人免费看| 精品国产一区二区三区在线播出| 东京热,男人的天堂| 69久久久久久久久久久久久| 91在线美女| 综合激情婷婷| 岛国片国产成人亚洲播放| 国产精品美女久久久久久网站| 久超碰这里只有精品| 日韩不卡码| 精品无码久久久| 久久精品小视频| 国产精品久久久久久 百度| 日韩强奸av| 日韩欧美日韩| 九九九九九精品| 亚洲操操操无码| 国产日韩人人| 无码视频一区二区| 黑丝91视频| 色综合美国| 亚洲经典啪啪| 亚洲啪啪性视频| 欧美成人一区二区三区在线播放| 国产一区在线观看无码AV| 九九九九热| 超碰91在线| 天天伊人| 丰满人妻一区二区三区免费 | 日韩精品一区二区三区四虎影视| 手机在线人成免费视频| 久综合国内精品自在自线| 97在线观看| 家庭乱伦麻豆| 天天上日日上日韩精品| 色臀av| 男人的天堂2019| 99热伊人| 狠狠91| 久久久久亚洲| 国产精品人妻无码久久久互動交流 | 日韩78m视频| 一区二区三区男女操逼黄色小电影| 美女尤物福利视频| 国产天美欧美| 亚洲91色在线| 熟女在线视频| 动漫区日韩区欧美区| 伊人青青草久久| 欧美99| 2020中文字幕| 亚洲欧美中日韩| 欧洲一区二区三区免费| 欧美亚洲综合色| 日韩伦理视频| 久久久久久久久久黄色网| www.男人天堂| 土豪酒店各种姿势玩弄极品幼稚| 九99久久| 久久二| 日本中文熟女视频| A片A5445444| 久久精视频美日韩在线视频| 婷婷亚洲综合| 亚洲中文人妻色| 超碰碰碰碰| 欧美AB在线观看| 国产青青美女玩逼视频| 超碰97极品9| 天堂亚洲欧美| a片久久久久久久久久久久| 亚瑟国产精品久久无码| 国产精品无码在线| 亚洲国男人的天堂| 白丝AV网站| 校园春色家庭伦理欧美激情| 蜜臀久久99精品久久久久久| 欧美Aⅴ| 性爱av网站| 大香蕉在线视频15| 欧美性综合| 精品对白久久不卡| 色天使亚洲综合在线观看| 十八禁啪啦拍视频无遮挡| 午夜福利久久久噜久噜久久综合| 色网1| 色汉综合| 亚洲av影院在线观看| 国产精品老熟女一区二区| 久久一二三四五六七八九区区| 蜜汁欧美| 香蕉久久AⅤ...| 99精品网| 色偷综合| 立川理惠被中出无码| 伦理片秋霞免费影院| 色综合潮| 黄色工厂这里只有精品| 国产精品久久久久无码AV会牛| 成在线人在线观看视频| 亚洲熟妇自偷自拍另欧美| 熟女高潮合集-永久久久-成人AV | 四虎AV影视国产精品亚洲精品| 尤物视频新赏网鲜网色诱网| 麻豆一区二区AV天美| 激情天天视频| 男女激情黄色网址| 国产超碰在线| 天天综合麻豆视频| 国产亚洲深夜激情| 思思热免费在线视频| 亚欧国产无码精品在线| 中文字幕一区二区三区人妻少妇在线| 941超碰| www亚洲免费| 久久久久无码| 91观看 国产白丝| 国内亚洲精彩视频在线| 超碰97资源中文字幕| 亚洲成人贴图| 丁香五月色| 久久亚洲不卡一区二区三区| 唯美清纯 妖精视频| 日本精品五区| 香蕉婷婷| 97色视频在线| 久久一二三四| 国产精品交换一区二区| 亚州黄站| 静品嫩模一区二区| 久久久久国产精品人妻aⅴ天堂| 一区二区三区免费视频入口| 大香蕉伊利av| 蜜臀久久99精品久久久久久无删减| 成人精品在线| 国产中午字一暮区| 亚洲字幕一区二区| 色综和网| 强奸国产精品视频| 神马久久久久久久久久| 色综合av综合久久| 观看免费区二区三区二| 日本色色色网站免费看不卡| 久久极品一区二区| 亚洲超碰97| 人妻少妇精品一区二区三区| 91亚洲网站| 日本三级中国三级99人妇网站| 亚洲熟女人妻中文字幕一区二区| www.99热| 97在线免费看视频| 色穴精品| 精品无码一区二区三区色欲| 嗯啊不要啊啊在线观看视频| 超碰色综合| 夜夜嗨AV蜜臀av| 日小BB小视频| 99精品高潮| 精品一二三区久久AAA片| 午夜福利在线合集| 中文字幕精品资源在线| 91中出视频| 亚洲欧美大| 26uuu最新| 黑人中出21连凳花野真衣| 国产精品露脸在线观看| 久久宗合亚洲| 中文字幕性感少妇av| 日日噜噜夜夜久久亚洲一区二区 | 啊啊啊好大好深| 神马福利久草| 综合av社区| 亚洲文学偷乱拍啪啪啪啪 | 女人天堂av在线播放| 亚洲男人天堂网久久| 亚洲精品国产熟女| 久久人妻一区二区三区高清| 9色在线| 亚洲毛片基地专区| 人妻无码久久一区二区三区免费| 日韩欧美中文| 天天综合网在线观看| 亚州男人天堂| AVE乱伦| 久久原创中文| 丁香五月综合| 99e久久国产精品| 久久久9品一区二区三区| 国产91av在线播放| 欧美黑人与女人91| 人人色人人操在线| 2024年最新色情网站在线观看| 国产精品久久久蜜臀| 综合欧美日韩在线观看| 天天综合网日韩| 2019午夜福利视频| 久久黄黄| 91老熟女视频| 久热久操| 国产激情综合| 中英熟女操女| 啊啊啊啊啊啊啊啊要喷了| Julia在线播放亚洲久久| 久久受www免费人成| 99久草| 中文字幕久久亚州无码| 婷婷五月天网| 日韩国产不卡在线视频| 美女91在线| 青青草久久| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 欧美日本不卡在线| 亚洲AV无码久久精品蜜桃小说| 日本天天操| 亚洲AV无线| 9久久久久久| 国产视频第2页| 密臀在线免费观看| www.狠狠操| 欧美大香蕉专区网| 69XX一中文字幕人妻91| 曰本道人妻久久久在线不卡色视频| 欧美天天综| 美女尤物福利视频| 中文字幕av亚洲在线| 久久首页| 国产精品网址| 亚洲色图日韩丝袜制服一区二区五月在线| 日日干夜夜操视频h| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 欧美 传媒 麻豆 日韩 偷拍| 五月婷婷综合激情| 噜噜噜在线视频| 久久在线观看免费视频| 夜夜性| 久久成人东京热人妻| 蜜桃丰满熟妇av无码区不卡| 国产不卡中文字幕免费avi| 日韩AV电影网站| 久久久久久久人妻| 日韩免费性爱视频在线观看| 1禁看欧美黄片免费看| 加勒比在线观看一区二区| 操久久久久| 9美女超碰在线免费观看| 天天日熟妇| 96久久久精品| 96久久久精品| 欧美少妇性乱| 手机不卡视频不卡在线一二三区| 亚洲日本韩国极品一区二区| 欧美日韩啪啪电影| 日韩人妻操B| 黄污污污污| 天天日天天爽| 久久久婷婷| 一区二区三区精品黑丝白丝酒店对鸡 | 精品无码久久久久久久久果冻糖心| 亚洲欧美在线丝袜| 国产精品一区二区三区在线| 日韩本不卡视频在线观看 | 一区二区三区 丝袜高跟| 91美女在线视频| 黄呦呦在线| 日韩精品影视| 美女爽爽爽刺痛洞洞| 人妻素股| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 国产黄色小视频网站| 伊人黄色片| 日本一级婬片试看三分钟| 国产精品呦一区二区三区| 成人 日本A片无码8888| 国产成人www免费人成看片| 亚洲精品久久久久久久蜜桃臀| 操逼国产免费| 免费av大片| 高清无码网址| 7月婷婷综合| 人妻酒店出差被中出免费在线播放| 热热热热日日漂亮永久永久国产日| 啊啊啊啊啊啊啊国| 97色插| 色眯眯射| 玖玖婷婷五月天| 日韩一级特黄av毛片| 97在线视频免费| 中文字幕88av在线| 爱做久久久久久| 国产强奸AV在线| 超碰免费欧美7| 天天舔天天日天天射| 亚洲Av无码成人精品国产| 欧美日韩精品久久久久东北老熟妇| 亚av顶级裸体一区二区三区四区五区| 久操免费观看| 欧洲在线性爱视频| 日韩免费看在线黄色片| 老熟妇一区二区三区…| 亚洲天堂 视频你懂的| 六月婷激情福利天堂69| 91网站18在线| 青青草在线视频美女| 一级乱伦网站| 老司机老司机午夜影院| 97综合在线| 色91综合网|