如何在mysql和php中进行全文搜索和相关性匹配?
比如说表1:如何在mysql和php中进行全文搜索和相关性匹配?,mysql,search,full-text-search,pattern-matching,search-engine,Mysql,Search,Full Text Search,Pattern Matching,Search Engine,比如说表1: $first_query = sql_query_first($search_term,$page); $list_info =sort_result(search($first_query,$search_term)); function search($querys,$term) { shinee_library(); $co_se=0; $search_q=mysql_query($querys); while (($list_info[$co_se] = mysq
$first_query = sql_query_first($search_term,$page);
$list_info =sort_result(search($first_query,$search_term));
function search($querys,$term) {
shinee_library();
$co_se=0; $search_q=mysql_query($querys);
while (($list_info[$co_se] = mysql_fetch_assoc($search_q)))
{
$name=0;$des=0;$re=0;$tag=0;
$pattern =explode(" ",$term);$size_len=sizeof($pattern);
while($re< $size_len) {
if (preg_match("/".$pattern[$re]."/i", $list_info[$co_se]["name"])) { $name=$name+1; }
if (preg_match("/".$pattern[$re]."/i", $list_info[$co_se]["description"])) { $des=$des+1; }
$re++;
}
$arr1 = array_unique($pattern);
$arr2 = array_unique(explode(",",$list_info[$co_se]["tags"]));
foreach($arr2 as $val) { if(in_array($val, $arr1)) { $tag=3; break; } }
$list_info[$co_se]["tit_rel"]=(($name/$size_len)+($des/$size_len)/4)+$tag;
$co_se++;
}
mysql_close();
return $list_info;
}
function sql_query_first($pattern,$page) {
$searchitems=explode(" ", $pattern); $clause ="OR"; $query = "select * from doc_basic WHERE ( ";
for($i=0;$i<count($searchitems);$i++)
{ $queryappend .= "(name LIKE '% ".$searchitems[$i]." %' OR description LIKE '% ".$searchitems[$i]." %')";
if($i<count($searchitems)-1) $queryappend .= $clause;
}
$query .=$queryappend.$attach.") LIMIT ".($page-1)."0 , ".$page."0";
return $query;
}
function sort_result($info) {
foreach ($info as $key => $row) { $tit_rel[$key] = $row['tit_rel']; }
array_multisort($tit_rel, SORT_DESC, $info);
return $info;
}
result1
>1. Title: bank aptitude interview questions and answers
>2. description: bank aptitude interview questions and general awareness questions
>3. tags: bank apptitude,bank
result2:
>1. Title: php interview questions and answers
>2. description: PHP and mysql interview questions for all mnc companies
>3. tags: php,mysql
第1行:
$first_query = sql_query_first($search_term,$page);
$list_info =sort_result(search($first_query,$search_term));
function search($querys,$term) {
shinee_library();
$co_se=0; $search_q=mysql_query($querys);
while (($list_info[$co_se] = mysql_fetch_assoc($search_q)))
{
$name=0;$des=0;$re=0;$tag=0;
$pattern =explode(" ",$term);$size_len=sizeof($pattern);
while($re< $size_len) {
if (preg_match("/".$pattern[$re]."/i", $list_info[$co_se]["name"])) { $name=$name+1; }
if (preg_match("/".$pattern[$re]."/i", $list_info[$co_se]["description"])) { $des=$des+1; }
$re++;
}
$arr1 = array_unique($pattern);
$arr2 = array_unique(explode(",",$list_info[$co_se]["tags"]));
foreach($arr2 as $val) { if(in_array($val, $arr1)) { $tag=3; break; } }
$list_info[$co_se]["tit_rel"]=(($name/$size_len)+($des/$size_len)/4)+$tag;
$co_se++;
}
mysql_close();
return $list_info;
}
function sql_query_first($pattern,$page) {
$searchitems=explode(" ", $pattern); $clause ="OR"; $query = "select * from doc_basic WHERE ( ";
for($i=0;$i<count($searchitems);$i++)
{ $queryappend .= "(name LIKE '% ".$searchitems[$i]." %' OR description LIKE '% ".$searchitems[$i]." %')";
if($i<count($searchitems)-1) $queryappend .= $clause;
}
$query .=$queryappend.$attach.") LIMIT ".($page-1)."0 , ".$page."0";
return $query;
}
function sort_result($info) {
foreach ($info as $key => $row) { $tit_rel[$key] = $row['tit_rel']; }
array_multisort($tit_rel, SORT_DESC, $info);
return $info;
}
result1
>1. Title: bank aptitude interview questions and answers
>2. description: bank aptitude interview questions and general awareness questions
>3. tags: bank apptitude,bank
result2:
>1. Title: php interview questions and answers
>2. description: PHP and mysql interview questions for all mnc companies
>3. tags: php,mysql
$first_query = sql_query_first($search_term,$page);
$list_info =sort_result(search($first_query,$search_term));
function search($querys,$term) {
shinee_library();
$co_se=0; $search_q=mysql_query($querys);
while (($list_info[$co_se] = mysql_fetch_assoc($search_q)))
{
$name=0;$des=0;$re=0;$tag=0;
$pattern =explode(" ",$term);$size_len=sizeof($pattern);
while($re< $size_len) {
if (preg_match("/".$pattern[$re]."/i", $list_info[$co_se]["name"])) { $name=$name+1; }
if (preg_match("/".$pattern[$re]."/i", $list_info[$co_se]["description"])) { $des=$des+1; }
$re++;
}
$arr1 = array_unique($pattern);
$arr2 = array_unique(explode(",",$list_info[$co_se]["tags"]));
foreach($arr2 as $val) { if(in_array($val, $arr1)) { $tag=3; break; } }
$list_info[$co_se]["tit_rel"]=(($name/$size_len)+($des/$size_len)/4)+$tag;
$co_se++;
}
mysql_close();
return $list_info;
}
function sql_query_first($pattern,$page) {
$searchitems=explode(" ", $pattern); $clause ="OR"; $query = "select * from doc_basic WHERE ( ";
for($i=0;$i<count($searchitems);$i++)
{ $queryappend .= "(name LIKE '% ".$searchitems[$i]." %' OR description LIKE '% ".$searchitems[$i]." %')";
if($i<count($searchitems)-1) $queryappend .= $clause;
}
$query .=$queryappend.$attach.") LIMIT ".($page-1)."0 , ".$page."0";
return $query;
}
function sort_result($info) {
foreach ($info as $key => $row) { $tit_rel[$key] = $row['tit_rel']; }
array_multisort($tit_rel, SORT_DESC, $info);
return $info;
}
result1
>1. Title: bank aptitude interview questions and answers
>2. description: bank aptitude interview questions and general awareness questions
>3. tags: bank apptitude,bank
result2:
>1. Title: php interview questions and answers
>2. description: PHP and mysql interview questions for all mnc companies
>3. tags: php,mysql
按相关性匹配获取结果,并按标记匹配对结果进行排序?是、、全文相关性匹配。。。并按标记对结果进行排序。。。