gpt4 book ai didi

php - 全文搜索功能未按预期工作

转载 作者:行者123 更新时间:2023-11-29 00:18:09 25 4
gpt4 key购买 nike

我已经使用了全文搜索功能,但它并没有达到预期效果。我在 search.php 文件中有以下代码:

$kws = $_POST['kw'];
$kws = mysql_real_escape_string($kws);
$query = "SELECT * FROM products WHERE MATCH (product_name,brand,short_desc)
AGAINST ('*".$kws."*' IN BOOLEAN MODE) limit 14" ;
$res_old = mysql_query($query);

“kw”是我在搜索框中输入的内容。现在举个例子,如果我搜索“Dove Intense”,它会将 Dove Antihairfall 放在顶部,因为它在数据库中位于顶部。我知道我正在通过两个单独的列(即品牌和产品名称)搜索全文功能,这种情况可能会发生。但是无论如何我可以用相反的方式进行搜索,这样如果它与两个列都匹配,它实际上会使搜索排名更高。基本上,用户输入什么,我需要那个东西在搜索结果中排名更高。任何人都可以提供一些想法如何实现这一点?

最佳答案

您(或其他人)可能仍然对答案感兴趣:

来自 Mysql 文档中针对使用 bool 模式的匹配:“它们不会自动按照相关性递减的顺序对行进行排序。您可以从前面的查询结果中看到这一点:...” CheckThis

您应该使用 bool 运算来实现您的预​​期,因此搜索“Dove Intense”将返回至少包含这两个词之一的行(即仅包含 Dove 的行 + 仅包含 Intense 的行 + 包含这两个词的行dove, intense (in any order)), 仅仅是因为两个词之间没有操作表示一个或操作!

这可能不是您期望的结果,因为您可能有兴趣在两个单词之间进行“与”运算,但是顺序呢?

如果您不介意顺序(即任何包含这两个词的行都将包含在结果中,例如“Intense whatever whatever dove ...”)这意味着您应该匹配:

'+Dove +Intense'在此搜索中,仅包含两个世界之一的行将不会包含在结果中。

如果您正在尝试实现严格搜索,即。只有包含这个短语“Dove Intense”的行你应该与 '"Dove Intense"'

匹配

现在关于排名:

如果您想要获得至少包含“Dove”的所有结果,但如果它们还包含“Intense”,则排名更高的行,那么您应该匹配 '+Dove Intense'

希望这对您尝试实现的内容有用。

关于php - 全文搜索功能未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22128836/

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