blaster_god Posted August 28, 2007 Share Posted August 28, 2007 Hello, I posted this message in to a few forums but no one could help me . Maybe I will get lucky here . I want to make a search in my PHP database and return all rows that contain some keywords, one after another, in any order (or at least half of them, one after another) . I want also to take words that has the key in them . If we have the word "good" , the word "goodness" will be ok and also "nogood" will be ok . I will explain more below . I have an array with keywords (the array can have maximum 6 elements) . So : key[1]="hello" key[2]="how" key[3]="snow" key[4]="dancing" key[5]="golf" I need a script that will search and return all rows that contain at least 3 (5/2 majored to the largest is 3) of this keywords, one after another, in any order . So something like all combinations : Here hello how snow is fine -> good When dancing gold snow how is it ? -> good how snow dancing golf is at the mountain . -> good I am wondering how snowing dancing golf is. -> good Fred says hellow snow -> not good (only 2 words) So far I am using : $mysql_str='%'; for($i=0;$i<$no;$i++) $mysql_str=$mysql_str.'%'.$keyword[$i]; $mysql_str=$mysql_str.'%'; ->this is to add all words in a string for the mysql query $result=mysql_query("SELECT *FROM `articole2` WHERE `continut` LIKE '$mysql_str' ORDER BY RAND() LIMIT 1001;"); ->this is to return the results . The problem is that my script returns results that have all words, anywhere in the body of the row . I need it to work only in consecutive order . Is it possible ? I know this is hard ... but maybe someone can help . Thank you in advance Quote Link to comment Share on other sites More sharing options...
ReDucTor Posted August 28, 2007 Share Posted August 28, 2007 I would recommend for searching look at FULL TEXT indexing Quote Link to comment Share on other sites More sharing options...
blaster_god Posted August 28, 2007 Author Share Posted August 28, 2007 Hello, I already looked there .. but I diden't find any method of doing what I want . I am not very good with mysql . This is a part of a software (.exe) that I am making for a contest for my school . I am good with C++ ... not with php and mysql .. Please someone help me with this . Thank you Quote Link to comment Share on other sites More sharing options...
fenway Posted August 29, 2007 Share Posted August 29, 2007 Then you should split your string on spaces and search using % wildcards... slow, but it will work. Quote Link to comment Share on other sites More sharing options...
blaster_god Posted August 29, 2007 Author Share Posted August 29, 2007 Can you please give me a simple example . I am not a lazzy guy, I just don't understand exactly what you mean . Thank you Quote Link to comment Share on other sites More sharing options...
fenway Posted August 30, 2007 Share Posted August 30, 2007 Sorry, I didn't see all of your code before... you'd have to try to find the two words together and separately, and "score" each "hit" differently. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.