如何在全文搜索SQL

时间:2017-01-03 09:23:31

标签: php mysql sql mysqli full-text-search

就像下面query一样,它显示为score。我想要与

匹配的字符串或单词相同
SELECT Opinion, MATCH(Opinion) AGAINST('nice language' IN BOOLEAN MODE) AS Score 
FROM opinions 
WHERE MATCH(Opinion) AGAINST ('nice language' IN BOOLEAN MODE);

输出:

+---------------------------------------+-------+
| Opinion                               | Score |
+---------------------------------------+-------+
| PHP is a very nice language           |     2 |
| Spain is a nice country to visit      |     1 |
| Perl is not as nice a language as PHP |     2 |
+---------------------------------------+-------+

但想要低于输出:

+---------------------------------------+--------------+
| Opinion                               | String       |
+---------------------------------------+--------------+
| PHP is a very nice language           | nice language|
| Spain is a nice country to visit      | nice         |
| Perl is not as nice a language as PHP | nice language|
+---------------------------------------+-------+------+

1 个答案:

答案 0 :(得分:0)

如果您正在寻找如下所示的结果,

enter image description here

然后使用以下查询

select Opinion, 
      case 
        when Opinion like '%nice language%' or (Opinion like '% nice %' and Opinion like '% language %') then 'nice language' 
        when Opinion like '% nice %' then 'nice' 
        when Opinion like '% language %' then 'language' 
      end string  
from table1
where 
    Opinion like '%nice language%' 
      OR (Opinion like '% nice %' and Opinion like '% language %') 
      OR Opinion like '% nice %' 
      OR Opinion like '% language %'

希望这会帮助你。