Php 基本网站搜索代码
我的网站上的基本搜索有问题,因为它只会在词序完全匹配的情况下查找匹配项 例如,如果我搜索红色鞋子,它不会显示红色鞋子的结果 如果您搜索红色鞋带,它将不会显示红色鞋带的结果(因为单词Shoe会取消此订单)。下面是我认为搜索框正在使用的代码。有谁能告诉我如何“放松”这个搜索,使其更广泛或准确的词序是不必要的 这是当前的代码:我的php代码知识是基础知识,因此如果可能,请参考如何解决此问题的确切位置(如果可能):Php 基本网站搜索代码,php,html,mysql,sql,Php,Html,Mysql,Sql,我的网站上的基本搜索有问题,因为它只会在词序完全匹配的情况下查找匹配项 例如,如果我搜索红色鞋子,它不会显示红色鞋子的结果 如果您搜索红色鞋带,它将不会显示红色鞋带的结果(因为单词Shoe会取消此订单)。下面是我认为搜索框正在使用的代码。有谁能告诉我如何“放松”这个搜索,使其更广泛或准确的词序是不必要的 这是当前的代码:我的php代码知识是基础知识,因此如果可能,请参考如何解决此问题的确切位置(如果可能): 有什么想法吗 您需要使用全文搜索功能 请参见以下语法: 匹配(字段名称1,字段名称2)与
有什么想法吗 您需要使用
全文搜索
功能
请参见以下语法:
匹配
(字段名称1,字段名称2)
与
(值)
在您的上下文中,如下所示:
$search .= $temp."MATCH(a.ad_headline,a.ad_text) AGAINST ('".$this->_db->getEscaped($filter,true)."')";
有关详细信息,请使用
全文搜索功能
请参见以下语法:
匹配
(字段名称1,字段名称2)
与
(值)
在您的上下文中,如下所示:
$search .= $temp."MATCH(a.ad_headline,a.ad_text) AGAINST ('".$this->_db->getEscaped($filter,true)."')";
有关详细信息,并非每个数据库都可以使用全文搜索
这是穷人的选择
我通常在空格上拆分查询,然后有很多类似的条件,但是没有结果的权重,但是它在一定程度上缩小了结果的范围
$pattern_parts = preg_split('/\s+/', $pattern);
$sql = "SELECT * FROM tablename WHERE "
foreach ($pattern_parts as $pattern_part) {
$sql.= " (field1 LIKE '%$pattern_part%' OR field2 LIKE '%$pattern_part%') AND ';
}
$sql .= " (fieldx = 'y') "; // other conditions go here
$sql .= "ORDER BY field1 ASC";
显然,您需要处理转义数据等
如果您需要的内容超出了全文搜索所能提供的范围,还可以查看phpluence并非每个数据库都可以使用全文搜索
这是穷人的选择
我通常在空格上拆分查询,然后有很多类似的条件,但是没有结果的权重,但是它在一定程度上缩小了结果的范围
$pattern_parts = preg_split('/\s+/', $pattern);
$sql = "SELECT * FROM tablename WHERE "
foreach ($pattern_parts as $pattern_part) {
$sql.= " (field1 LIKE '%$pattern_part%' OR field2 LIKE '%$pattern_part%') AND ';
}
$sql .= " (fieldx = 'y') "; // other conditions go here
$sql .= "ORDER BY field1 ASC";
显然,您需要处理转义数据等
如果您需要的内容超出了全文搜索所能提供的范围,也可以查看phplucence您可以发布由上述代码形成的查询吗?您应该阅读一下MySQLs全文功能。为了本页的好处,我对您重复的问题进行了评论,建议使用Apache Solr或Lucene。在这里阅读更多信息:stackoverflow.com/q/2010663/472495您可以发布由上述代码形成的查询吗?您应该阅读一下MySQLs全文功能。为了本页的好处,我对您重复的问题发表了评论,建议您使用Apache Solr或Lucene。在这里阅读更多信息:stackoverflow.com/q/2010663/472495Hi,我尝试了你的修复:$search.=$temp.“$MATCH(a.ad_headline,a.ad_text)与(“$this->_db->getescape($filter,true)。”)”;然而,在这次改变之后,它没有得到任何结果。。也许某个地方有错误读这个。可能有用全文搜索将是一种方式。如果您有空闲时间,我可以推荐Udacity的计算科学入门课程,在该课程中,您可以学习如何构建网络爬虫、搜索索引的哈希映射等。注意-这是用Python编写的,在我学习时没有使用数据库,但基本概念是相同的。您好,我尝试了您的修复:$search.=$temp.”MATCH(a.ad_headline,a.ad_text)反对(“$this->\u db->getescape($filter,true)。”;但是,在这次更改之后,它没有得到任何结果。也许有什么地方出错了?-阅读此文。可能有用全文搜索将是一种方式。如果您有空闲时间,我可以推荐Udacity的计算科学导论课程,在该课程中,您将学习如何构建网络爬虫、搜索索引的哈希图等。注意-这是用Python编写的,在我使用它时没有使用数据库,但基本概念是相同的。