如果没有完全匹配的,也就是说没有where name = '微星主板'的结果,只有where name like '%微星主板%'的结果,但又应该怎么样在这个结果里面将最匹配的记录显示在最上面呢?
解决方案 »
- php mysql怎么按周点击率排名给个详细的我是自学的新手
- 请问怎样把下面js游戏中finaltime写入数据库中?php+mysql实现?急!!!!!!
- 面试博弈题——老故事之三个火枪手
- 求一个数组问题!!
- 一个关于 include 文件 非常蹊跷的问题
- 怎么样才能把下面的程序改成传在指定的目录下?在线等待!!急!!!!
- 用jmail发信必须要在php.ini文件中设置一下,这个如果是虚拟空间就不能设置了,这要怎么解决啊?
- 新手问题?怎么将PHP中变量值传递给JS
- 做梦都想editplus支持代码折叠
- 如何将一组数据写入html文件
- 哪儿可以下载到支持php开发语言的指纹开发包
- [急]怎么样查询才能每个关键字出来一条新闻?
---------------------------------------------------------
只有where name like '%微星主板%'的结果,但又应该怎么样在这个结果里面将最匹配的记录显示在最上面呢?
--------------------------------------------------------2. 既然都是 '%微星主板%', 也就没什么最匹配的了,都一样
试试看,是不是你想要的。
我输入微星主板要先让完全匹配的出来,再让 最新型号微星主板 出来
应该如何实现呢?
---------------------------------------- order by name='微星主板' desc
Select * From 表 a,表 b Where a.name REGEXP '^微星主板$';
第二次遍历模糊查找,但是完全符合的剔除
Select * From 表 a,表 b Where a.name REGEXP '*微星主板*'AND NOT REGEXP REGEXP '^微星主板$';
只能把完全符合的放在最前面,相似度的话,真的没有办法,
少写个field!
SELECT infoID,infoTitle,MATCH (infoTitle,infoDetail) AGAINST ('*微星主板*' IN BOOLEAN MODE) AS score FROM tbl_info WHERE MATCH (infoTitle,infoDetail) AGAINST ('*微星主板*' IN BOOLEAN MODE)
首先你这里的相似度是没必要的,你只有两种状态,完全相等和包含.下面的sql是为多单词查询计算的
http://community.csdn.net/Expert/topic/5212/5212541.xml?temp=.7727777
实现你的需求需要数据库支持全文检索功能。而中文全文检索至今也没有很好的得到解决,有关中文全文检索所需的知识和资料你可以先看一下北京大学研究生课件。
全文检索的核心是分词。由于汉语的特殊性,分词变得非常困难。而西文就要简单的多了
我曾尝试将汉字转换成拼音后利用mysql的全文检索功能,但检索是以字为单位而不是以词为单位进行的,结果并不令人满意。但对实现你目前的需求还是绰绰有余的。
在检索中使用串定位函数或like子句都是不幸的,由于不能利用到索引,效率是极低的。
在一些论坛中使用单词表来简化这个问题
tbl_info ORDER BY flag DESC