dongpao5261 2017-03-30 15:32
浏览 43

全文搜索功能完全不起作用

I’m a self-taught PHP enthusiast. I got the following code to perform a search. The function stringToSearch cleans all the “portuguese” dangerous characters, the function jm_search performs the search… and everything goes fine, the search is done without any problem.

Now I want to perform Full-text Search and I’ve adapted the first code to do it but somehow it isn’t working…always returns 0 results. I’ve been working around but no success so far.

First piece of code

function stringToSearch($str) { 
//Let’s transform string to lowercase
$str = trim(strtolower($str));

//Taking out extra spaces from string... “long  word” or “long       word” becomes “long word”
while ( strpos($str,"  ") )
$str = str_replace("  "," ",$str);

//Change de dangerous characters "ã,á..." by clean characters "a"

$caracteresDanger = array ("Ã","ã","Õ","õ","á","Á","é","É","í","Í","ó","Ó","ú","Ú","ç","Ç","à","À","è","È","ì","Ì","ò","Ò","ù","Ù","ä","Ä","ë","Ë","ï","Ï","ö","Ö","ü","Ü","Â","Ê","Î","Ô","Û","â","ê","î","ô","û","!","?");
$caracteresClean = array ("a","a","o","o","a","a","e","e","i","i","o","o","u","u","c","c","a","a","e","e","i","i","o","o","u","u","a","a","e","e","i","i","o","o","u","u","A","E","I","O","U","a","e","i","o","u",".",".",".",".",".",".","." ,"." ,".");
$str = str_replace($caracteresDanger,$caracteresClean,$str);
//Now we don’t have any danger character in the string, and all are "lower",


//Let’s build the Regular Expression to MySQL
$caractresSimple = array("a","e","i","o","u","c");
$caractresEnvelope = array("[a]","[e]","[i]","[o]","[u]","[c]");

$str = str_replace($caractresSimple,$caractresEnvelope,$str);
$caracteresForRegExp = array("(a|ã|á|à|ä|â|ã|á|à|ä|â|Ã|Á|À|Ä|Â|Ã|Á|À|Ä|Â)",
"(e|é|è|ë|ê|é|è|ë|ê|É|È|Ë|Ê|É|È|Ë|Ê)",
"(i|í|ì|ï|î|í|ì|ï|î|Í|Ì|Ï|Î|Í|Ì|Ï|Î)", 
"(o|õ|ó|ò|ö|ô|õ|ó|ò|ö|ô|Õ|Ó|Ò|Ö|Ô|Õ|Ó|Ò|Ö|Ô)",
"(u|ú|ù|ü|û|ú|ù|ü|û|Ú|Ù|Ü|Û|Ú|Ù|Ü|Û)",
"(c|ç|Ç|ç|Ç)" );
$str = str_replace($caractresEnvelope,$caracteresForRegExp,$str);

//Changing spaces by .*
$str = str_replace(" ",".*",$str);

//Return final String!
return $str;
}

function jm_search(){
global $database, $sstring, $scategory, $my, $cinConfig, $Itemid, $option, $mainframe;
$scategory = 'description';
$str=stringToSearch($sstring);
$searchTerms = $scategory.” REGEXP \"" . $str . "\"";
$query = "SELECT * FROM #__jmovies WHERE ".$searchTerms." AND published = 1 AND access <= ".(int)$my->gid." ORDER BY title”;

$database->setQuery($query);
//echo $database->getQuery();
$rows = $database->loadObjectList();
$total = count($rows);
}  

Second piece of code (Full-text Search)

function jm_search(){
global $database, $sstring, $scategory, $my, $cinConfig, $Itemid, $option, $mainframe;
$scategory = 'description'     
$str=stringToSearch($sstring);
$searchArray = explode(" ", $str);
$query="SELECT * FROM #__jmovies WHERE  MATCH (`description`) AGAINST ('";
$i=0;
foreach ($searchArray as $word) {
$query .= "+".$word."* ";
}

$query .= "' IN BOOLEAN MODE) AND published = 1 AND access <= ".(int)$my->gid." ORDER BY title";
$database->setQuery($query);
//echo $database->getQuery();
$rows = $database->loadObjectList();
$total = count($rows);        
} 
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
    • ¥500 火焰左右视图、视差(基于双目相机)
    • ¥100 set_link_state
    • ¥15 虚幻5 UE美术毛发渲染
    • ¥15 CVRP 图论 物流运输优化
    • ¥15 Tableau online 嵌入ppt失败
    • ¥100 支付宝网页转账系统不识别账号
    • ¥15 基于单片机的靶位控制系统
    • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
    • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?