如何在搜索引擎中使用关键字



你好,我坐在这里思考以下问题:

我有一个自动建议搜索引擎,它在一个表格中运行,比如:

zipcode    city       sum
12345      town       5

我确实通过使用javascript来实现搜索,javascript会在输入的每个字母上运行一个循环。到目前为止,我只能查找一个关键字,例如城市名称或邮政编码。

现在我想把这两者结合起来,这样我就不会再把用户限制在这两者中的一个,即使在输入城市和邮政编码时也会找到它。

因此,我想通过使用来分离每个关键字

preg_split('/[s]+/', $keywords);

这是目前的问题。使用这种方法,每个关键字都将插入一个数组中。工作原理:

在html中,我有一个输入字段。下面我有一个无序列表div。在这个div中,javascript会自动添加我的search.php文件中的结果。看起来像:

include('../scripts/db_connect.php');
if (isset($_POST['search_term']) == true && empty($_POST['search_term']) == false) {
$search_term = $db->real_escape_string(htmlentities(trim($_POST['search_term'])));
$search_term_query = "SELECT * FROM `a` WHERE `b` LIKE '$search_term%'";
if ($result_query = $db->query($search_term_query)) {
while ($row = $result_query->fetch_assoc()) {
echo '<li>', 
$row["a"], 
' ', 
$row["b"],  
' ',
'( ',
$row["c"],
' )', 
' </li>';
}
}
}

我的javascript只处理一个关键字:

$(document).ready(function() {
$('.searchfield').keyup(function() {
var search_term = $(this).attr('value');
$.post('ajax/search.php', {search_term:search_term}, function(data) {
$('.result').html(data);
$('.result li').click(function() {
var result_value = $(this).text();
$('.searchfield').attr('value', result_value);
$('.result').html('');
});
});
});
});

所以现在我不知道该怎么解决。如果有人能帮我,我真的很感激。谢谢

只需保持值的原样,并通过post调用将整个字符串发送到php文件。在search.php中,您可以尝试以下操作:

function split_search_term($val) {
$val = explode(" ", $val);
$search_term_query = "SELECT * FROM `a` WHERE ";
foreach($val as $val_row) {
$search_term_query .= "(`zipcode` LIKE '" . $search_term . "%' OR `city`  LIKE '" . $search_term . "%') OR ";
}
if(count($val) > 0) {
// The IF statement is used to make sure that the foreach loop has been fired at least once,
// or else it would just chop off the 'WHERE ' part and you'll get something like:
// "SELECT * FROM `a` WH" and this will give you an error
$search_term_query = substr($search_term_query, 0, -4); // To cut off the last remaining ' OR ' in the query
} else {
$search_term_query .= "0"; // To finish the query so it doesn't return anything we don't want
}
return $search_term_query;
}

从这里你可以继续获取结果。我希望它能起作用。