通过MySQL查找单词并以全文返回整行

时间:2014-02-22 16:59:55

标签: mysql search

我打算在我的内容网站上设计一个搜索网页脚本。

例如,这是mysql DB中的文本内容。

  美国国务院一位高级官员说,亚努科维奇已离开基辅   乌克兰第二大城市哈尔科夫之后举行会议   星期五的和平协议。这位官员以条件发言   不愿透露姓名,曾与乌克兰外交部长通电话。

我搜索“哈尔科夫” 所以我得到这个结果:

  

...... 哈尔科夫的最大城市......之后的会议

这样做的最佳方法是什么?

我试过了:

<?php
         $_string="Kharkiv";
         $db = JFactory::getDBO();
        $query = "SELECT CONCAT(REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTR(introtext,1,INSTR(introtext, ".$_string.") - 1)),' ',4)),
                             SUBSTRING_INDEX(SUBSTR(introtext,INSTR(introtext, ".$_string.")),' ',4))
       FROM #__items
       WHERE introtext LIKE '%".$_string."%'
        ";

        $db->setQuery($query);
        $rows = $db->loadObjectList();
         foreach ($rows as $item) {
          echo $item->introtext;
                } 
           ?>

introtext是项目表的一个字段。

1 个答案:

答案 0 :(得分:1)

您可以使用以下查询:

SELECT CONCAT(
           REVERSE(SUBSTRING_INDEX(
                REVERSE(SUBSTR(
                    text,
                    1,
                    INSTR(text, 'Kharkiv') - 1
                )),
                ' ',
                4
           )),
           SUBSTRING_INDEX(
                SUBSTR(
                    text,
                    INSTR(text, 'Kharkiv')
                ),
                ' ',
                4
            )
        )
FROM table_name
WHERE text LIKE '%Kharkiv%'

4是您需要的字数。