程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql中應用sphinx搜刮子域名需留意的成績

mysql中應用sphinx搜刮子域名需留意的成績

編輯:MySQL綜合教程

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裡增長這個字符,否則是被疏忽的。

所以在搜刮的進程中我們須要留意下這些特別字符。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved