Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基本网站搜索代码_Php_Html_Mysql_Sql - Fatal编程技术网

Php 基本网站搜索代码

Php 基本网站搜索代码,php,html,mysql,sql,Php,Html,Mysql,Sql,我的网站上的基本搜索有问题,因为它只会在词序完全匹配的情况下查找匹配项 例如,如果我搜索红色鞋子,它不会显示红色鞋子的结果 如果您搜索红色鞋带,它将不会显示红色鞋带的结果(因为单词Shoe会取消此订单)。下面是我认为搜索框正在使用的代码。有谁能告诉我如何“放松”这个搜索,使其更广泛或准确的词序是不必要的 这是当前的代码:我的php代码知识是基础知识,因此如果可能,请参考如何解决此问题的确切位置(如果可能): 有什么想法吗 您需要使用全文搜索功能 请参见以下语法: 匹配(字段名称1,字段名称2)与

我的网站上的基本搜索有问题,因为它只会在词序完全匹配的情况下查找匹配项

例如,如果我搜索红色鞋子,它不会显示红色鞋子的结果

如果您搜索红色鞋带,它将不会显示红色鞋带的结果(因为单词Shoe会取消此订单)。下面是我认为搜索框正在使用的代码。有谁能告诉我如何“放松”这个搜索,使其更广泛或准确的词序是不必要的

这是当前的代码:我的php代码知识是基础知识,因此如果可能,请参考如何解决此问题的确切位置(如果可能):


有什么想法吗

您需要使用
全文搜索
功能

请参见以下语法:

匹配
(字段名称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编写的,在我使用它时没有使用数据库,但基本概念是相同的。