Eine Textsuchmaschine, die eine gemischte chinesische und englische Fuzzy-Suche unterstützt
Mehr README
Eine dynamische, programmbasierte Textsuchmaschine, die eine gemischte Fuzzy-Suche in Chinesisch und Englisch unterstützt und die Übereinstimmungsergebnisse mit der höchsten Gewichtung zurückgibt.
Schauen Sie sich bei Interesse diese Online-Demo an.
npm i text-search-engine
Unterstützt sowohl Node.js
als auch 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')
Übereinstimmungsergebnis: NEIN nicken e
import { search } from 'text-search-engine'
const source = '地表最强前端监控平台'
search ( source , 'jk' ) // [[6, 7]]
search ( source , 'qianduapt' ) // [[4, 5],[8, 9]]
search('地表最强前端监控平台', 'qianduapt')
Übereinstimmungsergebnis: 地表最强前端监控平台
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')
Übereinstimmungsergebnis: Knoten .js-Version监控Mehr V9
Durch das Hinzufügen von Leerzeichen wird jeder Begriff unabhängig. Jeder Begriff beginnt von Anfang an mit der Übereinstimmung, und übereinstimmende Begriffe werden entfernt, sodass der nächste Begriff von Anfang an mit der Übereinstimmung beginnt und zuvor übereinstimmende Begriffe ignoriert.
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')
Übereinstimmungsergebnis: Knoten .js-Version监控Mehr 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]])
Diese API wird zur schnellen Validierung von Textübereinstimmungshervorhebungen verwendet. Es gibt ANSI-Escape-Codes zurück, die mit console.log sowohl in Web- als auch in Node.js-Umgebungen ausgegeben werden können, um den hervorgehobenen Text anzuzeigen.
import { highlightMatches } from 'text-search-engine'
console . log ( highlightMatches ( 'Node.js 最强监控平台 V9' , 'nodev9' ) )
Die Konsole gibt Folgendes aus: Knoten .js ist eine neue Datei V9
Standard: 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]])
Standard: 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
Schauen Sie sich die Online-Demo von CodeSandbox an
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 } / >
}
Zeitkomplexität | Weltraumkomplexität | |
---|---|---|
Am besten | O(M(Quelle)) | O(M(Quelle)) |
Am schlimmsten | O(M(Quelle) * N(Ziel)) | O(M(Quelle) * N(Ziel)) |
Weitere Informationen finden Sie in den Beitragsrichtlinien.
Ein großes Dankeschön an alle unsere großartigen Mitwirkenden ❤️
Fühlen Sie sich frei, an dem Spaß teilzunehmen und eine PR zu senden!
Gerne können Sie ein Problem ansprechen. Sie können mich per WX oder E-Mail kontaktieren, wenn Sie einen guten Vorschlag haben (Anmerkungen: Textsuchmaschine).