SQL joomla搜索:多个单词,第二个依赖于第一个

时间:2013-08-27 13:51:24

标签: sql joomla

Searchstring是:“警察丹佛”。

我需要结果就是这样,警察在丹佛。现在我得到丹佛的每一个警察和一切。

这就是我所拥有的,这是指定搜索应该是完全还是任何的部分。但它并没有像我想的那样工作。 “警察丹佛”没有任何结果,警察丹佛导致芝加哥警方,丹佛消防员等等......

(代码来自k2 joomla扩展,开源)

$sql .= " AND MATCH(i.title, i.introtext, i.`fulltext`,i.image_caption,i.image_credits,i.video_caption,i.video_credits,i.extra_fields_search,i.metadesc,i.metakey) ";
        if ($type == 'exact')
        {
            $text = JString::trim($search, '"');
            $escaped = K2_JVERSION == '15' ? $db->getEscaped($text, true) : $db->escape($text, true);
            $text = $db->Quote('"'.$db->getEscaped($text, true).'"', false);
        }
        else //this is search for any of the words
        {
            $search = JString::str_ireplace('*', '', $search);
            $words = explode(' ', $search);
            for ($i = 0; $i < count($words); $i++)
            {
                $words[$i] .= '*';
            }
            $search = implode(' ', $words);
            $escaped = K2_JVERSION == '15' ? $db->getEscaped($search, true) : $db->escape($search, true);
            $text = $db->Quote($escaped, false);
        }
        $sql .= " AGAINST ({$text} IN BOOLEAN MODE)";

    }

    return $sql;

1 个答案:

答案 0 :(得分:0)

在我找到方法时自己回答:

我刚刚添加了

$words[$i] = "+".$words[$i];
在for()循环中

并且它可以工作。

相关问题