php中通过数组查询mysql中的数据
我有一个数组,输出结果Array([0]=>我[1]=>是[2]=>奇葩[3]=>中的[4]=>战斗机)如果查询mysqlnews中的TITLE和DETAILS字段包含这...
我有一个数组,输出结果
Array ( [0] => 我 [1] => 是 [2] => 奇葩 [3] => 中的 [4] =>战斗机 )
如果查询mysql news 中的 TITLE 和 DETAILS 字段包含这组数组中大部分词的数据,例:有一条数据的TITLE字段包含了“奇葩”和“战斗机”,条件成立。
这个mysql查询语句要如何写?望大神指点。
附:本人是在做一个类似百度的高级搜索,已经将传入的关键词进行了分词,有什么好的办法来匹配?或者大神请给个思路,跪谢了!人随时在。收到回答后1分钟内回复。
TITLE字段是一个完整的标题,如:别人都说我是一个屌丝中的战斗机
词已经分好了,主要是查询mysql中的字段,成功匹配的条件是:数组中有50%的词存在于TITLE字段中。 请问应该如何实现?给个思路也行。 展开
Array ( [0] => 我 [1] => 是 [2] => 奇葩 [3] => 中的 [4] =>战斗机 )
如果查询mysql news 中的 TITLE 和 DETAILS 字段包含这组数组中大部分词的数据,例:有一条数据的TITLE字段包含了“奇葩”和“战斗机”,条件成立。
这个mysql查询语句要如何写?望大神指点。
附:本人是在做一个类似百度的高级搜索,已经将传入的关键词进行了分词,有什么好的办法来匹配?或者大神请给个思路,跪谢了!人随时在。收到回答后1分钟内回复。
TITLE字段是一个完整的标题,如:别人都说我是一个屌丝中的战斗机
词已经分好了,主要是查询mysql中的字段,成功匹配的条件是:数组中有50%的词存在于TITLE字段中。 请问应该如何实现?给个思路也行。 展开
展开全部
你可以用or来查询
<?php
$arr = array('我', '是', '奇葩', '战斗机');
$where = '';
if(is_array($arr)){
foreach($arr as $val){
$where .=" or TITLE like '%$val%' ";
}
$where =rtrim($where, 'or'); //去掉右侧的or
}
?>
<?php
$arr = array('我', '是', '奇葩', '战斗机');
$where = '';
if(is_array($arr)){
foreach($arr as $val){
$where .=" or TITLE like '%$val%' ";
}
$where =rtrim($where, 'or'); //去掉右侧的or
}
?>
更多追问追答
追问
恩,我这个思路也是有问题的,如果很多数据都包含array中的“我”岂不是都出来了,- -有没有好的办法来控制一下?满足50%的词匹配才成功。
追答
问题是你能把一句话什么分成好几个词呢!
你的依据是什么呢!
你可以把一些非常常见的词剔除在查询的数组中!
展开全部
//$input是输入搜索的字符串
$input = "abcdefghijk........";
$length = strlen($input);
//两层循环,找出这个字符串的所有字串,用$arr[]数组存取
for($i = 0;$i <= $length; $i++) {
for($j = 1; $j <= $leng - $i; $j++) {
$arr[] = substr($input,$i,$j);
}
}
//在sql语句中用 in 进行查找,(语句可能不对,in的括号里面要加逗号,反正就是这个意思,你改下就好)
$sql = "select * from news where title in (" . $arr .")";
$input = "abcdefghijk........";
$length = strlen($input);
//两层循环,找出这个字符串的所有字串,用$arr[]数组存取
for($i = 0;$i <= $length; $i++) {
for($j = 1; $j <= $leng - $i; $j++) {
$arr[] = substr($input,$i,$j);
}
}
//在sql语句中用 in 进行查找,(语句可能不对,in的括号里面要加逗号,反正就是这个意思,你改下就好)
$sql = "select * from news where title in (" . $arr .")";
追问
分词我已经分好了,你的查询语句意思弄反了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询