我正在使用OpenCart。OpenCart产品标题内搜索
在我的网站上,我正在搜索术语“红色”。我提出了一个号的结果,如:
- 红觉得袋
- 红色电脑包
- 等...
但我也得到类似的结果:
- 信用卡套
- 信用卡套皮
- 等。
这是因为单词'credit'中存在字母'red'。我怎样才能防止这种情况,只搜索整个字/词?
我没有想过发布整个search.php文件,因为我认为这会有点多,是针对那些可能知道他们需要我复制到这里看到的东西。
我正在使用OpenCart。OpenCart产品标题内搜索
在我的网站上,我正在搜索术语“红色”。我提出了一个号的结果,如:
但我也得到类似的结果:
这是因为单词'credit'中存在字母'red'。我怎样才能防止这种情况,只搜索整个字/词?
我没有想过发布整个search.php文件,因为我认为这会有点多,是针对那些可能知道他们需要我复制到这里看到的东西。
这是因为通过所有互联网搜索的99.999999%都以这种方式进行。我了解您只想向您的客户提供最相关的结果,但您可能会忘记网页的用户友好性。
客户正在采用时下搜索像yes
条款和预期结果一样Yes
,yesterday
,Yesus
,等等。或者即使他们不知道这个词如何继续,只记得单词的基础,也更时单词具有相同的基数,例如Nebula
和nebulosa
(拉丁学名为猫头鹰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 -^
这两个变化的搜索应该像期望的(只搜索的产品名称和说明内满语)之后。