首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基本站点搜索代码

基本站点搜索代码
EN

Stack Overflow用户
提问于 2013-02-12 16:49:38
回答 2查看 263关注 0票数 1

我在我的网站上的基本搜索遇到了问题,因为它只在单词顺序是精确匹配的情况下才能找到匹配。

例如,如果我搜索Shoes Red,它不会显示Red Shoes的结果。

如果你搜索红色鞋带,它不会显示红色鞋带的结果(因为鞋这个词抛出了这个订单)。下面是我认为搜索框正在使用的代码。谁能告诉我如何“放松”这个搜索,这样它要么更宽泛,要么不需要精确的词序?

这是当前的代码:我的php代码知识是基本的,所以如果可能的话,请参考关于如何修复这个问题的确切位置(如果可能):

代码语言:javascript
复制
case 'search':
          if (intval($filter) != 0) {       
              $filter = JString::strtolower($filter);
              $id = intval($filter);
              $search .= $temp."(a.id = $id OR LOWER(a.ad_headline) LIKE '%".$this->_db->getEscaped($filter,true)."%' OR LOWER(a.ad_text) LIKE '%".$this->_db->getEscaped($filter,true)."%')";
          } else {
              $filter = JString::strtolower($filter);
              $search .= $temp."(LOWER(a.ad_headline) LIKE '%".$this->_db->getEscaped($filter,true)."%' OR LOWER(a.ad_text) LIKE '%".$this->_db->getEscaped($filter,true)."%')";
          }
          break;
          }
          }
      }
      return $search;
 }

这里有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2013-02-12 16:57:48

您需要使用Full-Text Search函数

请参阅以下语法:

MATCH(field_name1,field_name2)AGAINST(value)

在您的上下文中,如下所示:

代码语言:javascript
复制
$search .= $temp."MATCH(a.ad_headline,a.ad_text) AGAINST ('".$this->_db->getEscaped($filter,true)."')";

有关更多详细信息,请访问Refer link

票数 1
EN

Stack Overflow用户

发布于 2014-01-08 10:51:54

全文搜索并不总是可用于每个数据库。

这是穷人的另一种选择。

我通常在空格上拆分查询,然后有很多like条件,但是没有结果的权重,但它在一定程度上缩小了结果的范围。

代码语言:javascript
复制
 $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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14828687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档