gpt4 book ai didi

php - 如何使用 Flexsearch 进行自动完成搜索

转载 作者:行者123 更新时间:2023-11-29 16:20:41 26 4
gpt4 key购买 nike

就我的研究而言,我必须使用此脚本创建自动完成搜索。我的问题是如何调用数据库。我不知道。我想我必须创建另一个文件调用 search.php

我的代码

<head>
<script src="https://cdn.jsdelivr.net/gh/nextapps-de/flexsearch@master/dist/flexsearch.min.js"></script>


<script src="search.php"></script>

<style>
table{
width: 300px;
table-layout: fixed;
}
td, tr{
border: none;
}
input{
border: 1px solid #ddd;
border-radius: 3px;
outline: none;
background-color: #f5f5f5;
}
input, div{
padding:5px 5px;
width: 100%;
box-sizing: border-box;
}
#suggestions div{
padding: 10px 0;
border-bottom: 1px solid #ddd;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
</style>

</head>

  <div><input type="text" placeholder="Search ..." onkeyup="show_results.call(this);"></div>
<div id="suggestions"></div>

</div>


<script>
(function(){

var index = new FlexSearch({

encode: "advanced",
tokenize: "reverse",
suggest: true
});

var container = document.getElementById("suggestions");

for(var i = 0; i < data.length; i++){

index.add(i, data[i]);
}

window.show_results = function(){

var results = index.search(this.value, 10);
var fragment = document.createDocumentFragment();
var entry, tmp;

for(var i = 0; i < results.length; i++){

entry = document.createElement("div");
entry.textContent = data[results[i]];
fragment.appendChild(entry);
}

while((tmp = container.firstChild)){

container.removeChild(tmp)
}

container.appendChild(fragment);
};

}());
</script>

我的search.php,我尝试了这段代码,但关于如何获取某人制作的搜索关键字。

<?php
$terms = strtolower($_GET["q"]);

$Qcheck = $Db->prepare('select distinct products_id as id,
products_description as description
from :table_products_description
where products_description LIKE :terms
limit 10
');
$Qcheck->bindValue(':terms', '%' . $terms . '%');
$Qcheck->execute();

$list = $Qcheck->rowCount() ;

if ($list > 0) {
$array = [];

while ($value = $Qcheck->fetch() ) {
$array[] = $value;
}

$json_response = json_encode($array);

echo $json_response;
?>

我期望在输入字段中显示整个数据库的搜索结果

最佳答案

我愿意帮助你。首先我无法检查你的php代码,所以请检查php返回一个json编码的字符串。那么您想要的解决方案如下。

search.php 中的最后一行替换为以下两行:

header('Content-Type: text/javascript');
echo 'var data = ' . $json_response . ';';

就这些了:)

关于php - 如何使用 Flexsearch 进行自动完成搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54522299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com