比如表中有一个字段为title
内容假如如下:
--------------------------------
| id  |  title
--------------------------------
| 1   |  我是中国人,在中国的江苏省
--------------------------------
| 2   |  我是中国人,在上海市
--------------------------------
| 3   |  我是中国人,在北京
--------------------------------
查询的时候,可能按多个关键字:如"中国","北京"
需要将查询出来的结果,关键字和title中匹配度高的排到前面,不知道应该如何写这个查询呢?

解决方案 »

  1.   

    实话说,mysql不适合做你的功能.
    如果你非要这样的话,可以试试match against全文搜索.不过据说中文的不行.
      

  2.   

    思路:
    用REPLACE函数将字段要查找内容替换为空,用LEN(原字段长度)-LEN(替换后字段长度)
    即可得到有多少内容是匹配的
      

  3.   

    wwwwb,你的方法有个问题,如果都是按照“中国","北京"这种两个字的,你的是对的,如果有"中国","北京","大幅度萨迪斯第三"这样的,就不对了,两个“北京”也没有一个"大幅度萨迪斯第三"长。这种问题,还是用外部文件处理能比较好,比如java的lunce.
      

  4.   

    谢谢大家的回复想过用lunce,不过目前是使用是php开发,改用lunce的话,可能需要全部重新写代码不知道基于php+mysql有没有这方面的解决方案?
      

  5.   

    我有个想法,不过应该是效率很差的。就是你可以先用一个条件检索,然后union all下一个条件的,在union all
     下一个条件的,然后按照相同记录的个数进行排序。select id,title,count(*) as con from (
    select id,title from table where title ...
    union all
    select id, title form table where ....
    union all 
    .....
    ) as temp  group by id ,title order by con
    类似上面的写法。
      

  6.   

    想到如下方式来实现,
    将title转为拼音,表中添加一个title_py字段;
    然后将查询内容转为拼音,再我是中国人,再match against;