gpt4 book ai didi

php - 通过计算 PDO/SQL 相关的单词数对搜索结果进行排名

转载 作者:行者123 更新时间:2023-11-29 20:07:58 25 4
gpt4 key购买 nike

我想创建一个按预设排名显示结果的搜索引擎。评级由两部分组成 1. 帖子浏览量(由“帖子”表中的 POP [INT] 表示)和文本本身的单词量(由“帖子”表中的 TXT [STRING] 表示)。

也就是说,如果有三个结果

//$search = 'apple macbook';
  1. 3 个点击 (POP) 和 3 个相关关键字(2 个 MACBOOK、1 个在 TXT 中找到的 APPLE)= 6 - 将首先展示
  2. 2 个点击 (POP) 和 3 个相关关键字(1 个 MACBOOK、1 个在 TXT 中找到的 APPLE)= 5 - 将显示第二个
  3. 2 个点击 (POP) 和 1 个相关关键字(在 TXT 中找到 1 个 APPLE)= 3 - 将显示第三

我的代码:

$search = isset($_GET['s']) ? htmlspecialchars($_GET['s']) : ''; 
$search = strtoupper($search);
$search = strip_tags($search);
$search = trim($search);
$words = explode(' ', $search);
$words_condition = array();
$arguments = array();
foreach ($words as $word) {
$words_condition[] = 'TXT LIKE ?';
$arguments[] = '%'.$word.'%';
}

$query = $db->prepare("SELECT * FROM `post` WHERE ".implode(" OR ",
$words_condition)." ORDER BY POP DESC"); $query->execute($arguments);

关于我的表结构(“post”表)有 4 列...

  1. ID [INT] 2. SUB(帖子主题)[STRING] 3. TXT(正文/全文)[STRING] 4. POP [INT](访问此帖子的点击量)。

最佳答案

CREATE TABLE post (id INT, txt varchar(100), pop int);
INSERT INTO post VALUES (1, "key key cle cle", 1);
INSERT INTO post VALUES (2, "key key cle cle", 2);
INSERT INTO post VALUES (3, "key key cle", 2);
INSERT INTO post VALUES (4, "key cle cle", 1);

SELECT *, (LENGTH(txt) - LENGTH(replace(txt, 'cle', '')))/LENGTH("cle") as cle,
(LENGTH(txt) - LENGTH(replace(txt, 'key', '')))/LENGTH("key") as key,
(LENGTH(txt) - LENGTH(replace(txt, 'cle', '')))/LENGTH("cle")+(LENGTH(txt) - LENGTH(replace(txt, 'key', '')))/LENGTH("key") as nbKW
FROM post
ORDER BY nbKW DESC, pop DESC;

好的,我测试了一下,效果非常好!你必须根据你的论点来调整它!

关于php - 通过计算 PDO/SQL 相关的单词数对搜索结果进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40276999/

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