Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript搜索有限的手动索引_Javascript_Search Engine - Fatal编程技术网

使用javascript搜索有限的手动索引

使用javascript搜索有限的手动索引,javascript,search-engine,Javascript,Search Engine,我有两个包含多媒体内容(flash)的页面,我希望能够通过一个页面搜索它的内容 因为它的内容是不可搜索的,而且我有一个文档,其中包含了每个页面中将要出现的所有单词/图像描述,所以我想在几个页面中编写这些内容,将它们链接到具有多媒体内容的相应页面,并使用搜索引擎对这些信息进行索引 但这看起来过于复杂了。因此,我想到使用javascript并将每个页面的关键字插入到它自己的数组中,当用户搜索时,它会与每个数组和print的关键字进行比较: “此内容在以下页面中提供:” 这似乎很简单,但我想听听更有经

我有两个包含多媒体内容(flash)的页面,我希望能够通过一个页面搜索它的内容

因为它的内容是不可搜索的,而且我有一个文档,其中包含了每个页面中将要出现的所有单词/图像描述,所以我想在几个页面中编写这些内容,将它们链接到具有多媒体内容的相应页面,并使用搜索引擎对这些信息进行索引

但这看起来过于复杂了。因此,我想到使用javascript并将每个页面的关键字插入到它自己的数组中,当用户搜索时,它会与每个数组和print的关键字进行比较: “此内容在以下页面中提供:”

这似乎很简单,但我想听听更有经验的人的意见: -或者是我将要遇到的问题; -或更好/更简单的解决方案


我要求任何有贡献的人都认为我对编程不太有经验。

< P>这听起来像是一项工作。 您还没有描述数据结构,所以我将假设一个对象数组

假设你有这个数据结构

var all_items = [
    {url: 'a', title:'First Entry', description:'Foo'},
    {url: 'b', title:'Second Entry', description:'Bar'},
    {url: 'c', title:'Third Entry', description:'FooBar'}
    // etc..
];
您可以编写一个基于
.filter
的搜索函数,如下所示

function search(arr, str, url /* =true */, title /* =true */, desc /* =false */) {
    var src_fnc;
    // set true defaults
    if (undefined === url) url = true;
    if (undefined === title) title = true;
    // toBool
    url = url && true || false;
    title = title && true || false;
    desc = desc && true || false;
    // make function
    src_fnc = function (e) {
        if (url && e.url.indexOf(str) >= 0) return true;
        if (title && e.title.indexOf(str) >= 0) return true;
        if (desc && e.description.indexOf(str) >= 0) return true;
        return false;
    };
    return arr.filter(src_fnc);
}
然后调用它

search(all_items, 'ir');
/*  [
        {url: 'a', title:'First Entry', description:'Foo'},
        {url: 'c', title:'Third Entry', description:'FooBar'}
    ] */

隐马尔可夫模型。。。我曾考虑为每个页面使用一个单独的数组对象,并让引擎检查每个字符串是否匹配(因为大多数时候人们会搜索特定的单词)。然后,如果找到匹配项,它将返回:“在这些页面中找到匹配项:-模块1-食物;-模块5-旅行。”谢谢,顺便说一句。为此,只需运行此函数
x
次,其中
x
是您拥有的数组数,使用适当的数组,而不是
所有项目
(以及其他修复程序,以使函数与您的数据匹配).好的。谢谢。你还有其他建议吗?这是一个糟糕的做法吗?还有其他更有效的方法吗?你的方法更好吗?我真的在努力学习,我知道我不应该做半途而废的编码…这取决于你有什么和你没有分享,所以我的答案是基于假设的。有一种不同的方法,那就是进行迭代r或“生成器”。如果使用该方法,您不必立即将所有内容加载到内存中,而且,您可以使用
window.setTimeout
引入小间隙,这意味着页面不会因大量数据而冻结。