mysql中使用sphinx搜索子域名需注意的问题
比如搜索jb51.net会把www.jb51.net、jb51.net、sc.jb51.net等都搜索出来
搜索子域名
比如搜索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里增加这个字符,不然是被忽略的。
所以在搜索的过程中我们需要注意下这些特殊字符。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

如何使用PHP擴充Sphinx進行全文搜尋全文搜尋是現代Web應用程式中的常見需求之一。為了滿足使用者對資料的高效查詢和檢索,我們可以使用Sphinx這個功能強大的開源搜尋引擎來實現全文搜尋功能。 Sphinx使用C++編寫,提供了PHP的擴展,方便我們在PHP專案中使用。本文將介紹如何使用PHP擴充Sphinx進行全文搜索

Sphinx實現全文搜尋的PHP應用指南引言:在現代的Web應用中,全文搜尋功能已經成為了一個必備的特性。因為使用者常常會透過輸入關鍵字來搜尋和搭配他們所需要的內容。為了提供高效和準確的搜尋結果,我們需要一個強大的搜尋引擎。而Sphinx作為一個開源的全文搜尋引擎,它為PHP提供了一個完美的搜尋解決方案。本文將介紹如何使用Sphinx實現

SphinxPHP在自然語言處理中的應用技巧,需要具體程式碼範例隨著互聯網的發展和人工智慧技術的進步,自然語言處理(NaturalLanguageProcessing,NLP)成為了電腦科學中一個重要的研究方向。自然語言處理的目標是讓電腦能夠理解、解釋和產生自然語言,使得人與機器之間的溝通更加便利和智慧化。在自然語言處理中,文字檢索是一個非常重要

Sphinx是一個開源的全文搜尋引擎,可以快速、有效率地實現大規模資料的搜尋和檢索。在PHP專案中,使用Sphinx可以實現即時搜尋效果,提升使用者體驗與搜尋速度。本文將介紹如何在PHP專案中使用Sphinx,並提供具體的程式碼範例。一、安裝Sphinx要在PHP專案中實現即時搜尋效果,首先需要安裝Sphinx。可以在Sphinx的官方

Sphinx分散式搜尋的PHP實作方法解析引言:在當今網路時代,搜尋引擎已成為人們獲取資訊的主要方式之一。為了提供更有效率、更準確的搜尋結果,一些大規模的網站或應用程式通常會使用分散式搜尋引擎來處理搜尋請求。 Sphinx是一種知名的分散式搜尋引擎,具有良好的效能和擴充性。本文將介紹如何使用PHP實現Sphinx分散式搜索,並提供具體的程式碼示

Sphinx是一款開源的全文搜尋引擎,它能夠快速地處理大量的資料並提供高效的搜尋功能。在PHP專案中使用Sphinx,可以實現快速的搜尋和快取優化,提升專案的效能和使用者體驗。本文將介紹如何在PHP專案中整合Sphinx,並透過具體的程式碼範例來說明其使用方法和優勢。一、Sphinx的安裝與設定要使用Sphinx,首先需要在伺服器上進行安裝並進

Sphinx高可用搜尋的PHP實作方法研究導語:Sphinx是一個開源的全文搜尋引擎,它提供了快速、準確且可擴展的搜尋解決方案。在PHP網站中整合Sphinx可以實現高可用的搜尋功能。本文將探討Sphinx在PHP中的實作方法,並提供具體的程式碼範例。一、Sphinx簡介Sphinx是一款C++開發的全文搜尋引擎,它專注於快速和

SphinxPHP如何進行多語言搜尋與翻譯,需要具體程式碼範例隨著全球化的發展,多語言搜尋和翻譯在網站開發中變得越來越普遍。 Sphinx是一個開源的全文搜尋引擎,它提供了強大而高效的搜尋功能。在結合PHP語言使用Sphinx進行多語言搜尋和翻譯時,我們可以利用Sphinx的多語言支援和PHP的字串處理函數,來實現這項功能。本文將介紹如何使用Sphinx
