आपको प्रत्येक शब्द को तोड़ना होगा और SOUNDEX
. करना होगा तुलना, जो कि मैं आपको इस फ़ंक्शन के बारे में बताने जा रहा हूं।
फ़ंक्शन का उपयोग करना
उदाहरण उपयोग:SELECT p.name FROM products p WHERE soundex_match('fiftythree', p.name, ' ')
इसमें 3 तर्क होते हैं:
- सुई:वह शब्द जिसे आप ढूंढ रहे हैं
- haysack:शब्दों की वह श्रंखला जिसके बीच आप खोज कर रहे हैं
- splitChar:व्हाईटस्पेस चार्टर जो स्ट्रिंग को एकल शब्दों में विभाजित करेगा। आम तौर पर यह स्पेस (' ') . है
यदि घास के ढेर में कोई शब्द सुई के समान लगता है, तो फ़ंक्शन 1 और 0 अन्यथा वापस आ जाएगा।
अपने डेटाबेस में फ़ंक्शन बनाना
तो अपने डेटाबेस (phpMyAdmin या कमांड लाइन) में जाएं और इसे निष्पादित करें, आपको इसे केवल एक बार करने की आवश्यकता है):
drop function if exists soundex_match;
delimiter $$
create function soundex_match (needle varchar(128), haystack text, splitChar varchar(1)) returns tinyint
deterministic
begin
declare spacePos int;
declare searchLen int default length(haystack);
declare curWord varchar(128) default '';
declare tempStr text default haystack;
declare tmp text default '';
declare soundx1 varchar(64) default soundex(needle);
declare soundx2 varchar(64) default '';
set spacePos = locate(splitChar, tempStr);
while searchLen > 0 do
if spacePos = 0 then
set tmp = tempStr;
select soundex(tmp) into soundx2;
if soundx1 = soundx2 then
return 1;
else
return 0;
end if;
end if;
if spacePos != 0 then
set tmp = substr(tempStr, 1, spacePos-1);
set soundx2 = soundex(tmp);
if soundx1 = soundx2 then
return 1;
end if;
set tempStr = substr(tempStr, spacePos+1);
set searchLen = length(tempStr);
end if;
set spacePos = locate(splitChar, tempStr);
end while;
return 0;
end
$$
delimiter ;
http://www.imranulhoque.com/ mysql/mysql-function-soundex-match-multi-word-string/