Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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 MySQL搜索查询-如何查找类似“的结果”;“我的搜索”;“搜索时”;“我的研究”吗;?_Php_Mysql_Database_Search - Fatal编程技术网

PHP MySQL搜索查询-如何查找类似“的结果”;“我的搜索”;“搜索时”;“我的研究”吗;?

PHP MySQL搜索查询-如何查找类似“的结果”;“我的搜索”;“搜索时”;“我的研究”吗;?,php,mysql,database,search,Php,Mysql,Database,Search,我一直没有找到答案,也许我忽略了,但这是一个非常简单的问题: 我有一个Joomla/Virtuemart的搜索模块,这个模块生成的搜索结果有一个问题 当我键入此搜索词“mysearch”时,我希望它能找到包含搜索查询中的词的所有结果,例如标题:“这是我的搜索”或“多么好的搜索” 如何使用MySQL实现这一点 这是我的工作代码: $ab = explode(' ', $keyword); $ccc=''; $ccc2=''; foreach ($ab a

我一直没有找到答案,也许我忽略了,但这是一个非常简单的问题:

我有一个Joomla/Virtuemart的搜索模块,这个模块生成的搜索结果有一个问题

当我键入此搜索词“mysearch”时,我希望它能找到包含搜索查询中的词的所有结果,例如标题:“这是我的搜索”或“多么好的搜索

如何使用MySQL实现这一点

这是我的工作代码:

$ab = explode(' ', $keyword);
  $ccc='';
          $ccc2='';
          foreach ($ab as $k)
          {
            if (!empty($k))
           {

          if($ccc==''){         
          $ccc.= " concat(product_name, customtitle) RLIKE '".$db->getEscaped($k)."' AND";
                }
                else{
           $ccc.= " concat(product_name, customtitle) RLIKE '".$db->getEscaped($k)."' AND";
                }

                    if($ccc2==''){
          $ccc2.= " product_sku RLIKE '".$db->getEscaped($k)."' AND";
                }
                else{
            $ccc2.= " product_sku RLIKE '".$db->getEscaped($k)."' AND";
                }


       }
       else { 
       $ccc2.= " product_sku RLIKE '0' AND";
       $ccc.= " concat(product_name, customtitle) RLIKE '0' AND";
       }
    }

$ccc = rtrim($ccc, "AND");  
$ccc2 = rtrim($ccc2, "AND");    




$q ="(SELECT p.virtuemart_product_id, l.product_name
 from #__virtuemart_products p join
      #__virtuemart_products_".VMLANG." l
      on p.virtuemart_product_id = l.virtuemart_product_id
 WHERE ".$ccc." AND
       p.published = '1'
 LIMIT 0,".$prods."
)
union (select p.virtuemart_product_id, l.product_name
 from #__virtuemart_products p join
      #__virtuemart_products_".VMLANG." l
      on p.virtuemart_product_id = l.virtuemart_product_id
 where ".$ccc2." and
       p.published = '1'
 LIMIT 0,".$prods.")";

据我所知……MySQL不可能

如果你想要真正的模糊匹配,你需要为它设计一个搜索系统。该库在这方面非常好,并用于一些令人惊叹的OSS项目

退房并离开


这两个问题我都推荐。

我很想知道如何回答你的同一个问题,虽然我不熟悉莱文施坦,但我发现这个问题与你的问题非常相似,并且得到了有效的回答

注意:其他状态仅适用于小数据搜索。由于它反复合成,您可以想象它的成本有多高(CPU和内存)

堆栈溢出引用

PHP文档:

谢谢你,肖恩。我会调查的。不幸的是,这个搜索模块所使用的应用程序是一个拥有200多个类别和3000多种产品的网店,所以它一定很轻。谢谢,这就是我所担心的。我会查看你发布的链接,也许我可以使用其中的一些库。