Javascript-在字符串数组中搜索单词的最快速度(也不是完全匹配)
我在一个搜索所有文件的网页上进行编码搜索,该网页由以下部分组成。 我遍历每个文件,并将所有单词保存到字符串数组中。 例如:Javascript-在字符串数组中搜索单词的最快速度(也不是完全匹配),javascript,arrays,performance,search,Javascript,Arrays,Performance,Search,我在一个搜索所有文件的网页上进行编码搜索,该网页由以下部分组成。 我遍历每个文件,并将所有单词保存到字符串数组中。 例如:var-array=[“这些”、“是”、“一些”、“随机”、“单词”、“开”、“a”、“网页”] 搜索引擎的工作方式如下:例如,用户类型“s”,如果数组中的任何单词包含此字母,则该单词将显示为结果。在这种情况下,结果将是:“这些”、“一些”、“单词” 问题是我有30个文件在其中搜索,每个文件平均有500个单词,所以搜索速度很慢 字母搜索(例如“s”)~4秒 字母搜索(如“se
var-array=[“这些”、“是”、“一些”、“随机”、“单词”、“开”、“a”、“网页”]
搜索引擎的工作方式如下:例如,用户类型“s”
,如果数组中的任何单词包含此字母,则该单词将显示为结果。在这种情况下,结果将是:“这些”、“一些”、“单词”
问题是我有30个文件在其中搜索,每个文件平均有500个单词,所以搜索速度很慢
数组
,我认为这是最大的问题。那么,如果搜索到的单词在字符串数组中,并且比较不完全匹配,那么最快的方法是什么呢
编辑:
在网页上看起来像这样,例如:搜索词:“烧焦”
结果:
简介(页面名称;可点击的url链接)
…您可以在此页面中搜索。。。(搜索词周围有单词的句子)
代码说明:
- 遍历文件
- 删除html字符和其他特殊字符,并将单词从文件保存到字符串数组
- 将文件中的单词与用户搜索的单词进行比较
- 将带有搜索词的句子保存到
变量句子
- 将
保存到一个对象(该对象稍后在.html文件中迭代,句子显示在网页上)句子
words
这是我的密码
var searchIndexPromise;
var searchAppModule=angular.module(“searchApp”,[]);
运行(函数($rootScope,$http){
var globalSearch=$rootScope.globalSearch={
查询:“”,
结果:[],
打开:函数(){
window.location.href=“#!/51_00_搜索”;
globalSearch.search(globalSearch.query);
},
搜索:函数(查找){
如果(!searchIndexPromise)searchIndexPromise=$http.get(“searchIndex.json”)。那么(函数(响应){
返回响应数据;
});
console.log(“搜索”,查找);
searchIndexPromise.then(函数(searchIndex){
var-temp=[];
globalSearch.results=[];
var words=查找.拆分(“”);
如果(字数<1){
返回;
}
for(搜索索引中的var键){
for(searchIndex[key]中的var选项){
for(var i=0;i)\n | \ | \ | \ | \ | \*| \-|[^\w\s!?].\n |+(?=)/ig,data=pagesLoad[页面名称].src.replace(regex,”);
变量字符串=data.split(“”);
string=string.filter(布尔值);
让lowerString=string.map((项)=>{
return item.toLowerCase();
});
//这部分正在减慢搜索速度
对于(变量i=0;i