Un moteur de recherche de texte prenant en charge la recherche floue mixte en chinois et en anglais
Lire le fichier README
Un moteur de recherche de texte dynamique basé sur une programmation qui prend en charge la recherche floue mixte en chinois et en anglais, renvoyant les résultats de correspondance les plus pondérés.
Consultez cette démo en ligne si vous êtes intéressé.
npm i text-search-engine
Prend en charge les environnements Node.js
et 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')
Résultat de la correspondance : Non hocher la tête e
import { search } from 'text-search-engine'
const source = '地表最强前端监控平台'
search ( source , 'jk' ) // [[6, 7]]
search ( source , 'qianduapt' ) // [[4, 5],[8, 9]]
search('地表最强前端监控平台', 'qianduapt')
Résultat du match : 地表最强前端监控平台
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')
Résultat du match : Nœud .js ici监控平台 V9
L'ajout d'espaces rend chaque terme indépendant. Chaque terme commence à correspondre depuis le début et les termes correspondants seront supprimés, de sorte que le terme suivant commence à correspondre depuis le début et ignore les termes correspondants précédemment.
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')
Résultat de la correspondance : Nœud .js ici监控平台 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]])
Cette API est utilisée pour valider rapidement les surlignages des correspondances de texte. Il renvoie les codes d'échappement ANSI qui peuvent être générés à l'aide de console.log dans les environnements Web et Node.js pour voir le texte en surbrillance.
import { highlightMatches } from 'text-search-engine'
console . log ( highlightMatches ( 'Node.js 最强监控平台 V9' , 'nodev9' ) )
La console affichera : Nœud .js 最强监控平台V9
Par défaut : 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]])
Par défaut : 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
Jetez un œil à la démo en ligne de 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 } / >
}
Complexité temporelle | Complexité spatiale | |
---|---|---|
Meilleur | O(M(source)) | O(M(source)) |
Pire | O(M(source) * N(cible)) | O(M(source) * N(cible)) |
Veuillez consulter les directives de contribution pour en savoir plus.
Un grand merci à tous nos incroyables contributeurs ❤️
N'hésitez pas à vous amuser et à envoyer un PR !
bienvenue pour soulever un problème, vous pouvez me contacter sur wx ou par e-mail si vous avez de bonnes suggestions (notes : moteur de recherche de texte)