Jump to content

controlling search variable


turpentyne

Recommended Posts

This may sound like an odd thought, but us beginners come up with weird ideas sometimes.

 

I'm trying to solve a "three letters or less" search. Basically if the user enters 4 words or more, my script does a fulltext search. If they do 3 letters or less, it does a basic search. But how can I write the script so that it only searches for those matching letters that have either a space in front or at the end... or that start with the three letters searched.

 

so, if they type in "elm"

 

I want to get "chinese elm"

I want to get "Elmendorf's onion"

I don't want to get "engelman's spruce"...

 

or at the very least have results with no space on either side be at the end of the results?

 

right now, I'm just doing a  basic search and a basic search that concatenates two fields:

$data = mysql_query("SELECT * FROM plantae WHERE common_name_english LIKE '%$item%'");

 

$data = mysql_query("SELECT * FROM plantae WHERE CONCAT(taxonomic_genus,' ',scientific_name) LIKE '%$item%'");

Link to comment
Share on other sites

Using fulltext search is a better option.

http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html

 

I could see doing something like this.

$data = mysql_query("SELECT * FROM plantae WHERE common_name_english LIKE '$item' AND common_name_english LIKE '% $item' AND common_name_english LIKE '$item %'");

 

I did this simple function to only display results as you stated.

 

<?php
$search_term = "elm";
$results = array("elm","chinese elm","Elmendorf's onion","engelman's spruce","Elm tree");

function excludeWithin($search_term,$words){
$search_term =strtolower(trim($search_term));
$words =strtolower(trim($words));

if($search_term == $words || preg_match("/ $search_term/",$words) || preg_match("/$search_term /",$words)){
return $words;
}
}

foreach($results as $result){
if(excludeWithin($search_term,$result) != ""){
echo $result."<br />";
}
}
?>

 

Results would be:

elm

chinese elm

Elm tree

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.