I have made a query in which i have to find keywords from comments. I have more than 4 millions keywords. Special character can be comes after/before any Keyword in comments so I have to make more than 50 patterns to find the keywords. Here is the query :
[SELECT DISTINCT a.keywords,a.productID,oproduct_name
FROM review1_filter_keyword_comment as a where ("16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), ' %') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), '') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), ' %') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), '') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), '.%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), '.%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), '.%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), '.%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), '.%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), '.%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), '-%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), ' %') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), '') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), '-%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%(', LCASE(a.keywords), '-%') OR "16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), ')%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), '-%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), '/%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), ',%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), '-%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), '-%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), ':%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), '') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%(', LCASE(a.keywords), ' %') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), ')%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%(', LCASE(a.keywords), ')%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%(', LCASE(a.keywords), '/%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), ')%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%(', LCASE(a.keywords), ',%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), ')%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%(', LCASE(a.keywords), ':%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), ')%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), '/%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), '/%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), '') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), '/%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), ',%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), '/%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), ':%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), '/%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), ',%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), '') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), ',%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), ',%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), ',%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), ':%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), ':%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), ':%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), ':%') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), ' %') OR
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), '')) and
a.keywords<>'' and a.keywords IS NOT NULL and LENGTH(a.keywords)>2 and
isActive='1' and productID<>'' and productID IS NOT NULL order by keywords][1]
When i run this query single time it takes 6021 ms. But if I run multiple times like more than 50 it gets crash and shows 500 Internal server error (link: enter image description here). I know my query takes very long time to run due to this the error occurs. So i want to know is there any way to optimize my query.
Thank you