这是我的示例代码:http: //jsfiddle.net/pT6dB/
我有一点问题。那里有两个示例答案:
“地球有多圆?” 和“纸有多长?”
如果我输入搜索词“round Earth”,我希望它显示“地球有多圆?” 结果,但事实并非如此。
我想我需要更改查询,以便说明哪些问题同时包含“圆形”和“地球”。
这会是一个简单的修改吗?这是来自网站的示例代码,所以不幸的是我不知道从哪里开始。
这是我的示例代码:http: //jsfiddle.net/pT6dB/
我有一点问题。那里有两个示例答案:
“地球有多圆?” 和“纸有多长?”
如果我输入搜索词“round Earth”,我希望它显示“地球有多圆?” 结果,但事实并非如此。
我想我需要更改查询,以便说明哪些问题同时包含“圆形”和“地球”。
这会是一个简单的修改吗?这是来自网站的示例代码,所以不幸的是我不知道从哪里开始。
$('#search').keyup(function(e) {
var s = $(this).val().trim();
// show all results
$('#result LI').show();
// split the search into words
var keywords = s.split(' ');
// loop over the keywords and if it's not in a LI, hide it
for(var i=0; i<keywords.length; i++) {
$('#result LI:not(:contains('+keywords[i]+'))').hide();
}
});
您需要搜索每个单词,而不是搜索字符串“round Earth”,该字符串在任何项目中都不存在:
var words = s.split(' ');
$('#result LI').hide();
$(words).each(function() {
$('#result LI:contains(' + this + ')').show();
});
当然,这里有一些可以想象的复杂情况。我们所做的只是调整脚本以涵盖更具体的场景。但这对于您的目的可能已经足够了。
我想您是在问“这会是一个简单的修改吗?” 答案是不。:)
您正在尝试在没有数据库的情况下进行全文搜索,而只是 jQuery,让我们不要谈论更复杂的情况,但至少您需要使用 split 将用户输入的单词与空格分开并一一检查。
您正在寻找的是full-text search
javascript 并且contains
还不够。但是你可以做类似这个问题的公认答案:javascript text search?
尝试它还检查您是否输入了超过 1 个在句子中不连续的单词。