2014-06-26 50 views
0

我正在使用OpenCart。OpenCart产品标题内搜索

在我的网站上,我正在搜索术语“红色”。我提出了一个号的结果,如:

  • 红觉得袋
  • 红色电脑包
  • 等...

但我也得到类似的结果:

  • 信用卡套
  • 信用卡套皮
  • 等。

这是因为单词'credit'中存在字母'red'。我怎样才能防止这种情况,只搜索整个字/词?

我没有想过发布整个search.php文件,因为我认为这会有点多,是针对那些可能知道他们需要我复制到这里看到的东西。

回答

0

这是因为通过所有互联网搜索的99.999999%都以这种方式进行。我了解您只想向您的客户提供最相关的结果,但您可能会忘记网页的用户友好性。

客户正在采用时下搜索像yes条款和预期结果一样YesyesterdayYesus,等等。或者即使他们不知道这个词如何继续,只记得单词的基础,也更时单词具有相同的基数,例如Nebulanebulosa(拉丁学名为猫头鹰strix nebulosa) - 他们有相同的基地nebul。现在,当您应用所需的搜索修改时,只有使用正确的单词才能找到结果。

但是OK,这里有必要的更改 - 你需要在方法getProducts()改变两行catalog/model/catalog/product.php - 找到这条线(约行120):

$implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; 

,并更改为

$implode[] = "pd.name = '" . $this->db->escape($word) . "'"; 
//     ^- changed LIKE to = 
//      ^- we removed percentage signs -^ 

,然后执行该订单相同的(应该是128)

$sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; 

更改为

$sql .= " OR pd.description = '" . $this->db->escape($data['filter_name']) . "'"; 
//       ^- again changed LIKE to = 
//        ^-  again remove percentage signs here  -^ 

这两个变化的搜索应该像期望的(只搜索的产品名称和说明内满语)之后。