我有一个我在我的数据库中搜索的短语,例如“霍桑高地 - 脆弱的未来”
这会产生1个结果,但是,如果我搜索“Hawthorne Heights”,我只能获得更多结果。
我的问题是,是否可以减少搜索条款,直到我收到所需数量的结果或不再有。
E.g。初步搜索
“霍桑高地 - 脆弱的未来”
然后
“霍桑高地 - 脆弱”
然后
“霍桑高地”
然后
“霍桑”
初始搜索词可以是一个词,其中1遍是所需的全部,或者,它可以是10个单词。
这在一个查询中是否可行,或者我是否必须减少该短语然后再次搜索...如果是这样,我将如何减少该短语?
非常感谢您的帮助。
以下是我目前用于查询的代码:
$searchTerm = trim($searchTerm);
$result345 = mysql_query("SELECT main_category, PRid, title, genre, imageURL, lowprice, highprice, prodcatID from PRprodINFO2 where (($title LIKE '%$searchTerm%') AND (imageURL <>'') $is_cat_id) $genre order by $order_col $asc_desc limit 2000",$db);
$ variables(例如$ title,$ is_cat_id等)是动态的,但不会影响查询,其存储短语的$ searchTerm
答案 0 :(得分:0)
根据我的理解,在您的情况下,您需要为此创建自定义查询。在这种情况下,您需要先使用"-"
然后space
(“”)拆分/分解搜索关键字。
所以在这些任务结束时,你将拥有6个以下的所有单词。
For example :
your search keyword is = "Hawthorne Heights - Fragile Future"
1) Hawthorne Heights
2) Fragile Future.
3) Hawthorne
4) Heights
5) Future
6) Fragile
创建一个包含所有单词的数组并在循环中创建查询。已与OR
条件相关联。
EDITE根据您的查询:
$searchterm = "Hawthorne Heights - Fragile Future";
$keyword = explode("-",$searchterm);
for($i=0;$i<count($keyword);$i++){
$word[] = explode(" ",trim($keyword[$i]));
}
for($j=0;$j<count($word);$j++){
$str[] = implode(',',$word[$j]);
}
$strArr = explode(',',implode(',',$str));
$queryStr = "";
for($cnt = 0;$cnt<count($strArr);$cnt++){
$queryStr.= "($title LIKE '%".$strArr[$cnt]."%') OR";
}
$searchTerm = substr($queryStr,0,-2);
$result345 = mysql_query("SELECT main_category, PRid, title, genre, imageURL, lowprice, highprice, prodcatID from PRprodINFO2 where (($title LIKE '%$searchterm%'OR $searchTerm) AND (imageURL <>'') $is_cat_id) $genre order by $order_col $asc_desc limit 2000",$db);
这些代码可能有更多的优化但是因为快点我做的就是我点击快...:)
这可能对你有所帮助..如果你想做其他任何事情我也知道..
感谢。