Search behaviour - question about keyword
Let's say I have stored on database the following text: 9 F-347
How may I find the text above using one of the following search criteria? 9f347 or 9f or f34?
Thank you.
Let's say I have stored on database the following text: 9 F-347
How may I find the text above using one of the following search criteria? 9f347 or 9f or f34?
Thank you.
Sorry it took so long to get back to you on this. I asked a colleague for help with this since it is not one I'm familiar with and he was able to help work out a solution which is this.
You will need to make use of the string replace function for MySQL within the query itself like this:
SELECT *
FROM products
WHERE REPLACE(REPLACE(products.ProductName,'-', ''),' ', '') LIKE '%f34%'
This example would is for a ProductName column in a products table. To use this approach with DataAssist Search you will need to adjust the code that is written to the page. Where the column is listed in the server behavior you should replace it with the replace like this:
original:
$WADbSearch1->addComparisonFromEdit("ProductName","S_custom","AND","Includes",0);
updated:
$WADbSearch1->addComparisonFromEdit("REPLACE(REPLACE(ProductName,'-', ''),' ', '')","S_custom","AND","Includes",0);
If you need further help implementing this please post back with the $WADbSearch1 line of code from your results page and I can show you how to implement it.
Hello Eric, thank you for your reply.
Actually the instructions provided are not working with my code.
I will try to indicate more details for a better understanding.
The codes below are an example of what king of data I have on products table:
W 706
9 F-347
GFE 101
SA-156-A
CE 213 A/2
CE 487 A/2
AC - 1001 - 01
as you can see, the codes stored in database include spaces, - and /. Those characters should be "removed" during the search but not from the search result.
Let's say I use this search criteria: AC1001
The search result should indicate the following result:
AC - 1001 - 01
Another search criteria example: CEA2
CE 213 A/2
CE 487 A/2
Another search criteria example: CE213A2
CE 213 A/2
In this way, more accurate is the search criteria, more accurate is the result without the risk to miss the code.
I also send you the SQL file with few table rows to speedy your testing, if you would like to:
mp_2009-09-30.sql.html
This is the query I have on page and the 2 lines generated from Data Assist Search Wizard:
$query_duxProdotti = "SELECT duxProdotti.id, duxAziende.azienda AS aziendaID, duxProdotti.codOriginale, duxProdotti.codMP FROM duxProdotti LEFT JOIN duxAziende ON duxProdotti.aziendaID = duxAziende.id";
$WADbSearch1->keywordComparison($KeyArr0,"".((isset($_POST["cod_originale"]))?$_POST["cod_originale"]:"") ."","AND","Includes",",%20","%20","%22","%22",0);
$WADbSearch1->keywordComparison($KeyArr1,"".((isset($_POST["cod_mp"]))?$_POST["cod_mp"]:"") ."","OR","Includes",",%20","%20","%22","%22",0);
How this is implemented will differ a little for a keyword type search. Instead of adding it into the $WADbSearch1->keywordComparison part of the code you would add it into the $KeyArr variable like this:
$KeyArr1 = array("REPLACE(REPLACE(REPLACE(ItemName,'-', ''),' ', ''), '/', '')");
I added in the extra replace to account for the slash also. So if your column was named ItemName this is how the $KeyArr variable should look. If you have multiple instances of them then you will need to add this into each $KeyArr variable.
What this code is doing is looking for instances of a dash, a space, and a slash. If found it will replace them with an empty string. This will in effect allow your searches to be performed on the values minus these special chars. The results that are returned will be the same as they appear in the db. This adjustment is only for searching through the values.
Eric, thank you very much, it is working perfectly.
You are very welcome, I would like to extend your thanks to Jason who was a big help finding all of this out and getting it implemented correctly.
Your friends over here at WebAssist! These Dreamweaver extensions will assist you in building unlimited, custom websites.
These out-of-the-box solutions provide you proven, tested applications that can be up and running now. Build a store, a gallery, or a web-based email solution.