php+MYSQL模糊查找关键字的问题

php+MYSQL模糊查找关键字的问题,第1张

如果是通过姓名查找呢,我建议你还是把所有姓都定义好在查询吧(可以通过拼音索引增加软件友好度),这样查询的效率会好很多,总比每次都要把姓名从数据库里拿出来再抽象成模糊查询字段

再查询要快吧。

如果真是可以自己抽象出来所有符合的模糊对象的话,我看快赶上人工智能了,计算量不小。现阶段应该还用不到。用到了,我们也做不出来。

不知道对你有用吗,第二次回答问题。

O(∩_∩)O哈哈~

原谅我的看错.楼上的朋友.

不过就算你在头文件设了utf-8.就能保证数据库服务器->服务器->客户端都不乱码吗?Mysql我就不清楚了. mssql 就不一定啦. 如果是mssql我建议必须用函数编码.

另我感到怀疑的是楼上的同学 居 然 用 str_split() 函 数 去 拆 分 中 文 字 符 ....我没试过结果.如果结果可行.那使用楼上的同学的吧.毕竟比较简单.我这种比较保险.

瞧俺老孙的法宝.........BINGO 开始

html 页面

<input type=“text”>

<script>var url = "fuck.php?fuck=" + escape(document.getElementsByTagName("input")[0].value)

//传递和跳转的window函数我就不写了喔

</script>

php 页面

// php 解码函数

function unescape($str) {

$str = rawurldecode($str)

preg_match_all("/%u.{4}|.{4}|d+|.+/U",$str,$r)

$ar = $r[0]

foreach($ar as $k=>$v) {

if(substr($v,0,2) == "%u")

$ar[$k] = mb_convert_encoding(pack("H4",substr($v,-4)),"gb2312","UCS-2")

elseif(substr($v,0,3) == "")

$ar[$k] = mb_convert_encoding(pack("H4",substr($v,3,-1)),"gb2312","UCS-2")

elseif(substr($v,0,2) == "") {

$ar[$k] = mb_convert_encoding(pack("H4",substr($v,2,-1)),"gb2312","UCS-2")

}

}

return join("",$ar)

}

// 这里法宝开始 完美解决每个汉字拆分出来

$arr = explode("u",$_GET["fuck"])//是因为escape编码后每个汉字的开头都是u

$shit = ""

foreach($arr as $value)

{

$value = unescape($value)// 网上找到的php 解码函数

$shit .= "%".$value."%"//字符串拼接好了可供查询了呵呵

}

$sql = "select * from table where con like ‘$shit’"

//或者 $shit = "'".$shit."'"然后$sql = "select * from table where con like“.$shit.

xxsql_query($sql)// 大功告成! 后面的echo 自己喜欢怎样格式输出就输出呗.

mysql支持自然语言的全文搜索

对于字段的要求:

只能是CHAR, VARCHAR, 或 TEXT 类型的字段

表类型是MyISAM

在表建好,并导入数据后,建立一个fulltext index(索引)

用法:

select 字段1,字段2,字段3, MATCH(要匹配的字段名) AGAINST('keyword') as score from table having score>0

命中的每一行都会有个分数,分数越大表示结果越接近keyword,分数越低的就是越模糊的结果


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6162696.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存