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

Using javascript to search a limited and manually made index

本文关键字:索引 javascript 搜索 使用      更新时间:2023-09-26

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

由于它的内容是不可搜索的,并且我有一个文档,其中所有的文字/图像描述将出现在每个页面中,我正在考虑将此内容写在几个页面中,将它们链接到具有多媒体内容的相应页面,并使用搜索引擎索引此信息。

但是这看起来过于复杂了。所以我认为使用javascript和插入每个页面的关键字到它自己的数组,当用户搜索它与每个数组和打印的比较:"此内容可在以下页面获得:"

这看起来很简单,但我想听听更有经验的人的意见:要么解决我将要遇到的问题;-或更好/更容易的解决方案。

我请求任何投稿的人考虑到我在编程方面没有那么丰富的经验。

这听起来像是Array.prototype.filter的工作。
您还没有描述数据结构,所以我假设Object s的数组

假设你有这样的数据结构,

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'}
    ] */