เครื่องมือค้นหาข้อความที่รองรับการค้นหาแบบคลุมเครือแบบผสมภาษาจีนและอังกฤษ
ภาษาจีน อ่านฉัน
เอ็นจิ้นการค้นหาข้อความตามการเขียนโปรแกรมแบบไดนามิกที่รองรับการค้นหาแบบคลุมเครือแบบผสมภาษาจีนและอังกฤษ โดยให้ผลลัพธ์การจับคู่ที่มีน้ำหนักสูงสุด
ลองชมการสาธิตออนไลน์นี้หากคุณสนใจ
npm i text-search-engine
รองรับทั้ง Node.js
และสภาพแวดล้อม Web
import { search } from 'text-search-engine'
const source = 'nonode'
search ( source , 'no' ) //[[0, 1]]
// Matches 'no', continuous characters have higher weight
search ( source , 'nod' ) // [[2, 4]]
search ( source , 'noe' ) // [[0, 1], [5, 5]]
search ( source , 'oo' ) // [[1, 1],[3, 3]]
search('nonode', 'noe')
ผลการแข่งขัน: เลขที่ พยักหน้า จ
import { search } from 'text-search-engine'
const source = '地表最强前端监控平台'
search ( source , 'jk' ) // [[6, 7]]
search ( source , 'qianduapt' ) // [[4, 5],[8, 9]]
search('地表最强前端监控平台', 'qianduapt')
ผลการแข่งขัน: 地表最强前端监控平台
import { search } from 'text-search-engine'
search ( 'Node.js 最强监控平台 V9' , 'nodejk' ) //[[0, 3],[10, 11]]
const source_2 = 'a_nd你你的就是我的'
search ( source_2 , 'nd' ) //[[2, 3]]
// Matches '你你的'
search ( source_2 , 'nnd' ) //[[4, 6]]
// Matches 'a_'n'd你你的就'是我的'
search ( source_2 , 'nshwode' ) //[[2, 2],[8, 10]]
search('Node.js 最强监控平台 V9', 'nodejk')
ผลการแข่งขัน: โหนด .js 最强监控平台 V9
การเพิ่มช่องว่างทำให้แต่ละเทอมมีความเป็นอิสระ แต่ละคำจะเริ่มต้นการจับคู่ตั้งแต่ต้น และคำที่ตรงกันจะถูกลบออก ดังนั้นคำถัดไปจึงเริ่มจับคู่ตั้งแต่ต้นและละเว้นคำที่ตรงกันก่อนหน้านี้
const source_1 = 'Node.js 最强监控平台 V9'
search ( source_1 , 'jknode' ) // undefined
search ( source_1 , 'jk node' ) // [[10, 11],[0, 3]]
search('Node.js 最强监控平台 V9', 'jk node')
ผลการแข่งขัน: โหนด .js 最强监控平台 V9
const source_1 = 'zxhxo zhx'
search ( source_1 , 'zh' ) //[[6, 7]])
// Even though the weight of 'zh' is higher, but the next term 'o' is not matched, so hit the previous one
search ( source_1 , 'zho' ) //[[0, 0],[2, 2],[4, 4]])
API นี้ใช้สำหรับการตรวจสอบไฮไลต์การจับคู่ข้อความอย่างรวดเร็ว โดยส่งคืนรหัส Escape ANSI ที่สามารถส่งออกได้โดยใช้ console.log ในสภาพแวดล้อมทั้งบนเว็บและ Node.js เพื่อดูข้อความที่ไฮไลต์
import { highlightMatches } from 'text-search-engine'
console . log ( highlightMatches ( 'Node.js 最强监控平台 V9' , 'nodev9' ) )
คอนโซลจะส่งออก: โหนด .js 最强监控平台V9
ค่าเริ่มต้น: false
const source = 'chrome 应用商店'
search ( source , 'meyinyon' ) //[[4, 5], [7, 8]])
// would merge blank spaces between each index of the matched term
search ( source , 'meyinyon' , { mergeSpaces : true } ) //[[4, 8]])
ค่าเริ่มต้น: undefined
const source = 'Node.js 最强监控平台 V8'
search ( source , 'nozjk' ) //[[0, 1], [8, 8], [10, 11]]
// When the strictnessCoefficient is 0.5 and nozjk is five characters long, Math.ceil(5 * 0.5) equals 3. If the match is less than or equal to 3 characters, it will return normally.
search ( source , 'nozjk' , { strictnessCoefficient : 0.5 } ) //[[0, 1], [8, 8], [10, 11]]
search ( source , 'nozjk' , { strictnessCoefficient : 0.4 } ) //undefined
ดูการสาธิตออนไลน์ของ CodeSandbox
import { HighlightWithTarget } from 'text-search-engine/react'
function Test ( ) {
return < HighlightWithTarget source = 'Node.js 最强监控平台 V9' target = 'nodejk' / >
}
import { HighlightWithRanges } from 'text-search-engine/react'
import { search } from 'text-search-engine'
export default function DemoForHighlightWithTarget ( ) {
const ranges = search ( 'Node.js 最强监控平台 V9' , 'nodejk' )
return < HighlightWithRanges source = 'Node.js 最强监控平台 V9' hitRanges = { ranges } / >
}
ความซับซ้อนของเวลา | ความซับซ้อนของอวกาศ | |
---|---|---|
ดีที่สุด | O(M(ที่มา)) | O(M(ที่มา)) |
แย่ที่สุด | O(M(ที่มา) * N(เป้าหมาย)) | O(M(ที่มา) * N(เป้าหมาย)) |
โปรดดูหลักเกณฑ์การมีส่วนร่วมเพื่อเรียนรู้เพิ่มเติม
ขอบคุณมากสำหรับผู้มีส่วนร่วมที่น่าทึ่งของเราทุกคน ❤️
ร่วมสนุกและส่ง PR ได้เลย!
ยินดีต้อนรับสู่การแจ้งปัญหา คุณสามารถติดต่อฉันได้ที่ wx หรืออีเมล หากคุณมีข้อเสนอแนะที่ดี (หมายเหตุ: เครื่องมือค้นหาข้อความ)