- Posts: 63
- Thank you received: 3
Search order
13 years 5 months ago #98246
by ians
Search order was created by ians
Hi there,
I'm having a slight problem with searches on my website:
www.wslr.co.uk/index.php/resources-catalogue
Question 1
The search is returning partial words - for instance if I do a text search for our planet, anything with the "our" contained in it is shown - like your, tour, flour etc etc which means many hundreds of products are returned.
I have the text search looking in product code, product keywords, product name, and product description.
Is there a way to make the search only see whole words?
Question 2
I would like to return the products in order of priority and I've set up a custom field named "order" and this will be 1,2,3 or 4
I'd like all order 1 to come up first, then order 2, and so on.
I've set the Default parameters for products ordering field to "order" which is my cistom field, but it doesn't seem to work in the way I expected.
How can I set all searches to return the product in order 1,2,3,4 etc
Hope this makes sense,
ian
I'm having a slight problem with searches on my website:
www.wslr.co.uk/index.php/resources-catalogue
Question 1
The search is returning partial words - for instance if I do a text search for our planet, anything with the "our" contained in it is shown - like your, tour, flour etc etc which means many hundreds of products are returned.
I have the text search looking in product code, product keywords, product name, and product description.
Is there a way to make the search only see whole words?
Question 2
I would like to return the products in order of priority and I've set up a custom field named "order" and this will be 1,2,3 or 4
I'd like all order 1 to come up first, then order 2, and so on.
I've set the Default parameters for products ordering field to "order" which is my cistom field, but it doesn't seem to work in the way I expected.
How can I set all searches to return the product in order 1,2,3,4 etc
Hope this makes sense,
ian
Please Log in or Create an account to join the conversation.
13 years 5 months ago #98383
by nicolas
Replied by nicolas on topic Search order
Hi,
1. You can change the line:
$list[]=' b.'.$column.' LIKE \'%'.hikashop_getEscaped($term, true).'%\' ';
to:
$list[]=' b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).' %\' ';
in the file administrator/components/com_hikashop/classes/filter.php to make sure there is a space before and after the words but then if the word is the first word of the field and thus doesn't have a space before or if if it has a dot or a comma after.
That might be possible with a more complex condition like that :
$list[]=' (b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).' %\' OR b.'.$column.' LIKE \''.hikashop_getEscaped($term, true).' %\' OR b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).',%\' OR b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).'.%\')';
but it's still not perfect...
2. Change the "ordering field" in the hikashop options of your menu via the menu Display->Content menus and that should do it.
1. You can change the line:
$list[]=' b.'.$column.' LIKE \'%'.hikashop_getEscaped($term, true).'%\' ';
to:
$list[]=' b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).' %\' ';
in the file administrator/components/com_hikashop/classes/filter.php to make sure there is a space before and after the words but then if the word is the first word of the field and thus doesn't have a space before or if if it has a dot or a comma after.
That might be possible with a more complex condition like that :
$list[]=' (b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).' %\' OR b.'.$column.' LIKE \''.hikashop_getEscaped($term, true).' %\' OR b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).',%\' OR b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).'.%\')';
but it's still not perfect...
2. Change the "ordering field" in the hikashop options of your menu via the menu Display->Content menus and that should do it.
The following user(s) said Thank You: ians
Please Log in or Create an account to join the conversation.
13 years 5 months ago #98389
by ians
Replied by ians on topic Search order
Thanks Nicolas,
For the search - I'll try changing the code as you suggest.
However, I was wondering if there could be another option?
If you include some words in commas in Google - like "our planet" it would find matching whole words. Is there a way to make this happen in HikaShop? This would also solve my problem.
Yours,
ian
For the search - I'll try changing the code as you suggest.
However, I was wondering if there could be another option?
If you include some words in commas in Google - like "our planet" it would find matching whole words. Is there a way to make this happen in HikaShop? This would also solve my problem.
Yours,
ian
Please Log in or Create an account to join the conversation.
13 years 5 months ago #98521
by nicolas
Replied by nicolas on topic Search order
That's not possible.
We're simply using the LIKE feature of mysql to search for the text in the database. Google has a powerful search algorithm which is much much much more complex than what can be done with that LIKE feature.
We're simply using the LIKE feature of mysql to search for the text in the database. Google has a powerful search algorithm which is much much much more complex than what can be done with that LIKE feature.
Please Log in or Create an account to join the conversation.
13 years 5 months ago #98534
by ians
Replied by ians on topic Search order
Hi Nicolas,
thank you for your help.
I applied the more complex condition and it seems to work.
I'll let you know how I get on with it.
You are a genius!!
Thanks
Ian
thank you for your help.
I applied the more complex condition and it seems to work.
I'll let you know how I get on with it.
You are a genius!!
Thanks
Ian
Please Log in or Create an account to join the conversation.
13 years 5 months ago #99723
by ians
Replied by ians on topic Search order
Hi Nicolas,
Many thanks for helping with the search in filters.
I've added the code you suggested and it has made a big difference:
$list[]=' (b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).' %\' OR b.'.$column.' LIKE \''.hikashop_getEscaped($term, true).' %\' OR b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).',%\' OR b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).'.%\')';
but it's still not perfect...
It's not working quite as expected. If the product has a single word - no space before or after, it still doesnt show up in the search.
if i search for "dragonslayer" for instance which is the only word in the title - doesnt come up.
or if I search for it's product code "FD0810" it doesn't come up
product link is here:
www.wslr.co.uk/index.php/resources-catal...ow/1789-dragonslayer
Search page is here:
www.wslr.co.uk/index.php/resources-catalogue
do you have any suggestions?
Many thanks for helping with the search in filters.
I've added the code you suggested and it has made a big difference:
$list[]=' (b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).' %\' OR b.'.$column.' LIKE \''.hikashop_getEscaped($term, true).' %\' OR b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).',%\' OR b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).'.%\')';
but it's still not perfect...
It's not working quite as expected. If the product has a single word - no space before or after, it still doesnt show up in the search.
if i search for "dragonslayer" for instance which is the only word in the title - doesnt come up.
or if I search for it's product code "FD0810" it doesn't come up
product link is here:
www.wslr.co.uk/index.php/resources-catal...ow/1789-dragonslayer
Search page is here:
www.wslr.co.uk/index.php/resources-catalogue
do you have any suggestions?
Please Log in or Create an account to join the conversation.
13 years 5 months ago - 13 years 5 months ago #99838
by Jerome
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.
Replied by Jerome on topic Search order
Hi,
It's because you have some missing tests, like the search string itself:
Regards,
It's because you have some missing tests, like the search string itself:
Code:
$searchEscaped = hikashop_getEscaped($term, true);
$list[]=' (b.'.$column.' LIKE \'% '.$searchEscaped.' %\' OR b.'.$column.' LIKE \''.$searchEscaped.' %\' OR b.'.$column.' LIKE \'% '.$searchEscaped.',%\' OR b.'.$column.' LIKE \'% '.$searchEscaped.'.%\' OR b.'.$column.' LIKE \''.$searchEscaped.'\')';
Regards,
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.
Last edit: 13 years 5 months ago by Jerome.
Please Log in or Create an account to join the conversation.
13 years 5 months ago #99921
by ians
Replied by ians on topic Search order
Hi Nicolas,
Ah, I see.
I just tried adding that code but it broke the shop (shop wouldn't load), so i must have added it to the wrong place.
Please could you clarify where the 2 bits of code go?
I replaced this:
$list[]=' b.'.$column.' LIKE \'%'.hikashop_getEscaped($term, true).'%\' ';
with this:
$list[]=' (b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).' %\' OR b.'.$column.' LIKE \''.hikashop_getEscaped($term, true).' %\' OR b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).',%\' OR b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).'.%\')';
and added this to it:
$searchEscaped = hikashop_getEscaped($term, true);
$list[]=' (b.'.$column.' LIKE \'% '.$searchEscaped.' %\' OR b.'.$column.' LIKE \''.$searchEscaped.' %\' OR b.'.$column.' LIKE \'% '.$searchEscaped.',%\' OR b.'.$column.' LIKE \'% '.$searchEscaped.'.%\' OR b.'.$column LIKE \''.$searchEscaped.'\')';
Appreciate your help,
Ian
Ah, I see.
I just tried adding that code but it broke the shop (shop wouldn't load), so i must have added it to the wrong place.
Please could you clarify where the 2 bits of code go?
I replaced this:
$list[]=' b.'.$column.' LIKE \'%'.hikashop_getEscaped($term, true).'%\' ';
with this:
$list[]=' (b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).' %\' OR b.'.$column.' LIKE \''.hikashop_getEscaped($term, true).' %\' OR b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).',%\' OR b.'.$column.' LIKE \'% '.hikashop_getEscaped($term, true).'.%\')';
and added this to it:
$searchEscaped = hikashop_getEscaped($term, true);
$list[]=' (b.'.$column.' LIKE \'% '.$searchEscaped.' %\' OR b.'.$column.' LIKE \''.$searchEscaped.' %\' OR b.'.$column.' LIKE \'% '.$searchEscaped.',%\' OR b.'.$column.' LIKE \'% '.$searchEscaped.'.%\' OR b.'.$column LIKE \''.$searchEscaped.'\')';
Appreciate your help,
Ian
Please Log in or Create an account to join the conversation.
13 years 5 months ago #100260
by Jerome
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.
Replied by Jerome on topic Search order
Hi,
I have fix a missing quote in my previous post.
Please recopy it, it should be better.
Regards,
Jerome
I have fix a missing quote in my previous post.
Please recopy it, it should be better.
Regards,
Jerome
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.
Please Log in or Create an account to join the conversation.
Time to create page: 0.283 seconds