mysql中應用sphinx搜刮子域名需留意的成績。本站提示廣大學習愛好者:(mysql中應用sphinx搜刮子域名需留意的成績)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql中應用sphinx搜刮子域名需留意的成績正文
搜刮子域名
好比搜刮jb51.net會把www.jb51.net、jb51.net、host.jb51.net等都搜刮出來。
假如應用mysql用like的話效力長短常低的,幾百萬乃至上萬萬的數據那是沒有方法應用的,因而采用sphinx來做。
在應用的進程中發明了諸多成績,這裡將其總結起來,也讓不曉得的同伙留意下這些字符。
剖析:
sphinx是全文索引,它搜刮的是包括的記載。
起首假如我們不做任何設置的話,搜刮jb51.net會湧現把aajb51.net、jb51.a.cn、jb51.net.com(固然這個域名後綴不存在,然則會有相符響應規矩的域名,這裡只舉例)等等。
為何會湧現這類情形呢?
我們應用./search -c 設置裝備擺設文件 -i 索引名 'jb51.net' 搜刮的時刻會發明上面words部門被分紅了兩部門'jb51'和'cn',默許以.作為分隔符,假如我們不想讓它做為分隔符,就須要把.添加到charset_table外面,這裡須要說的是我們搜刮域名只須要有字母、數字、"-"等字符,其他的不須要。設置以下:
charset_table = 0..9,A..Z->a..z, a..z,U+002e,U+002d,U+0040,U+0060 #個中U+002e代表".",U+002d代表"-",U+0040代表"@",U+0060代表"`",這裡為ascii碼值。
如許會處理失落搜出jb51.a.cn這類域名。
那末jb51.net.com這類呢?我們可以在索引的字段中增長唯一後綴好比“XXXXX”,concat(search,'XXXXX')如許,就不會出來了。
如今就剩下aajb51.net這類域名,我們應用症結字“ '".jb51.net"' ”(留意是單引號外面套雙引號)如許來搜刮,主域名零丁加上,然則應用的進程中發明如許搜出了與這個域名有關的域名,好比aa.bb.cn如許,經後來研討是"."的成績,後來把"."調換成"@",來搜刮又湧現12306等很多多少域名沒法讀取到的成績,後來經研討估量這些特別字符在sphinx中都有特別的意義,因而找到了"`"這個字符,換成這個今後一切才算正常了。
留意:將"."調換成"`"等響應字符後需在charset_table裡增長這個字符,否則是被疏忽的。
所以在搜刮的進程中我們須要留意下這些特別字符。