改变Magento的索引全文搜索?(Alter Magento Index Fulltext Sea

2019-09-21 23:46发布

我有我已经赋予一个唯一的任务,我在它的最后一站,但这个子任务已经被证明是非常困难的! 所以,你有背景的:我们经营的Magento站点,并使用定制SOLR搜索页面。 我使用phpSolrClient解析XML的Solr并返回可用的结果,我再建从搜索结果页面。

我一直在考虑的任务是必须在Magento的后端的“属性”,可以称之为“search_tags”。 我们的目标是能够插入一个标签,它的重量由逗号delimitered:

sight^2,hearing^1,smell^3

我想编辑Magento的全文重新索引掰开串代码,并插入的次数,标记X到fulltext1_en领域。 因此,这将增加“视线”两次,“听”一次,“闻”三次。 这将允许我们说,把搅拌机在页面上,当有人搜索榨汁机,即使术语“榨汁机”或“果汁”并没有出现在fulltext1_en字符串。 我已开发的代码来拉,分割和重复......不过我是在停转,因为我不知道该怎样修改代码,包括在此期间重新索引过程中我fulltext1_en。 如果任何人有编辑Magento的全文重新编制的经验,你的投入将不胜感激! 我看着Indexer.php,但一切都在该文件中是模糊的最好,所以这是没有帮助! 爱是爱Magento的!

Answer 1:

OK对于那些希望改变,并给予“加权标签”使用SOLR在Magento定制搜索到,我一整晚都没睡得到这个权利,但它的工作原理...

首先,在Magento的一个过滤器,它适用于所有产品。 我将其命名“search_tags”。

接下来,使用下面的公式在该过滤器的检查项目:

dude^25,crazyman^25,wierdsearch^25

其次是一克拉的每个单词,然后你想给它的重量。 (这是多少次的话会被重复,然后添加到fulltext1_en。)

做到这一点后,打开以下文件:

/app/code/core/Mage/CatalogSearch/Model/Mysql4/Fulltext.php

我知道它说MySQL4,不注意,SOLR使用这个指数。

关于500线,你会看到下面的块:

    if ($selects) {
        $select = '('.join(')UNION(', $selects).')';
        $query = $this->_getWriteAdapter()->query($select);
        while ($row = $query->fetch()) {

略低于此块插入如下:注:请不要使用我在这里列出的属性ID,这是唯一我的设置。 你将不得不寻找你的数据库找到这个ID。 我使用JOIN加盟eav_attributescatalog_product_entity_varchar和使用SELECT找到attribut_idvalue WHERE ENTITY_ID =(此处插入你的产品ID)。 这是一个痛苦,但它是唯一的方法。 这将返回该产品的所有属性。 查找具有我们先前输入的标签之一,并获得它的ID。 插入到下面的代码。

      $attr_val = $row['value'];  // Set attr_val so that it can be manipulated in following IF

      if ($row['attribute_id'] == 457) {    // 457 is the ID of MY search_tags filter, yours WILL be different!  It can be found by joining eav_attributes table and catalog_product_entity_varchar and searching for the attribute value and ID where entity_id is X
            $input = $row['value'];             // Set $input to value of filter
            $attr_val = "";                         // Create Emtpy string
            $pieces = explode( ',', $input ); // Explode filter by comma

                foreach ($pieces as $val){
                $i=1;
                $val = explode( '^', $val);    // Explode each "tag" by carat
                    while ($i <= $val[1]) {     // Loop while $i is less than or equal to the number on the right side of the carat
                    $i++;
                    $attr_val = $attr_val . " " . $val[0];  // Append $attr_val with the word to the right side of the carat
                    }                   
                }                       
         }

    $result[$row['entity_id']][$row['attribute_id']] = $attr_val;  //  Modified from Original

当您插入......然后注释掉以下块。

$result[$row['entity_id']][$row['attribute_id']] = $row['value']; // ORIGINAL BLOCK  --  UNCOMMENT -- DO NOT DELETE

现在运行一个全文重新索引,和你的fulltext1_en应该表明您已经添加了“花花公子”,“crazyman”和“weirdsearch”所​​有的25倍! 当完成索引,搜索任何标签在网站搜索:您加入该项目的标签应密切展现出来,如果不是顶部。 请享用!



文章来源: Alter Magento Index Fulltext Search?