PHP MySQL搜索查询-如何查找类似“的结果”;“我的搜索”;“搜索时”;“我的研究”吗;?
我一直没有找到答案,也许我忽略了,但这是一个非常简单的问题: 我有一个Joomla/Virtuemart的搜索模块,这个模块生成的搜索结果有一个问题 当我键入此搜索词“mysearch”时,我希望它能找到包含搜索查询中的词的所有结果,例如标题:“这是我的搜索”或“多么好的搜索” 如何使用MySQL实现这一点 这是我的工作代码:PHP MySQL搜索查询-如何查找类似“的结果”;“我的搜索”;“搜索时”;“我的研究”吗;?,php,mysql,database,search,Php,Mysql,Database,Search,我一直没有找到答案,也许我忽略了,但这是一个非常简单的问题: 我有一个Joomla/Virtuemart的搜索模块,这个模块生成的搜索结果有一个问题 当我键入此搜索词“mysearch”时,我希望它能找到包含搜索查询中的词的所有结果,例如标题:“这是我的搜索”或“多么好的搜索” 如何使用MySQL实现这一点 这是我的工作代码: $ab = explode(' ', $keyword); $ccc=''; $ccc2=''; foreach ($ab a
$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多种产品的网店,所以它一定很轻。谢谢,这就是我所担心的。我会查看你发布的链接,也许我可以使用其中的一些库。