Heim Datenbank MySQL-Tutorial PHP+MYSQL实现全文检索_MySQL

PHP+MYSQL实现全文检索_MySQL

Jun 01, 2016 pm 01:16 PM
如何

使用分词类库,分词类库请参见:http://www.xunsearch.com/scws/

如何使用PHP实现全文检索功能?
很多人可能马上可以想出几种方案,比如:文件检索法、采用SQL的like语句等方法,但这些方法效率都相当的低。
这里介绍一种比较高效的PHP全文检索实现方法,这就是采用MYSQL的FULLTEXT字段类型。但是MYSQL的FULLTEXT字段对中文的支持不是很好,本文也一并介绍如何通过PHP+MYSQL实现中文全文检索功能。
首先需要用到一个PHP中文分词扩展模块——SCWS,关于这个模块的安装和使用大家可以到www.ftphp.com/scws去查找相关内容(如有问题请留言)。
然后再看看mysql的fulltext字段类型的相关信息:
MySQL3.23.23之后的版本开始支持全文索引和搜索。全文索引在 MySQL 中是一个 FULLTEXT 类型索引。
FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、VARCHAR 或 TEXT 列上创建。对于大的数据库,将数据装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE (或 CREATE INDEX) 创建索引,这将是非常快的。将数据装载到一个已经有 FULLTEXT 索引的表中,将是非常慢的。

MYSQL全文搜索通过 MATCH() 函数完成。
下面举一简单例子:
1、新建数据表:
CREATE TABLE fulltext_sample(copy TEXT,FULLTEXT(copy)) TYPE=MyISAM;
这里的copy就是一个fulltext类型的字段,如果建表的时候没有添加全文检索字段,也可以通过alert来添加,如:
ALTER TABLE fulltext_sample ADD FULLTEXT(copy)
2、插入数据:
INSERT INTO fulltext_sample VALUES
('It appears good from here'),
('The here and the past'),
('Why are we hear'),
('An all-out alert'),
('All you need is love'),
('A good alert');
3、数据检索:
SELECT * FROM fulltext_sample WHERE MATCH(copy) AGAINST('love');
上面就是mysql的全文检索功能,注意:在全文索引上进行搜索是不区分大小写的。

下面再看如何实现中文全文检索。
fulltext字段是以词语为单位,词语之间需要用空格隔开,而汉语的句子中各个词语之间并不会用空格隔开,因此我们需要对中文进行分词,这也就是为什么上面需要强词用到中文分词扩展模块。
但是尽管对中文进行分词,MYSQL还是不能通过MATCH来实现中文的全文检索,这需要通过一定的方法来进行转换,一个比较简单实用的方法是采用下面这个函数(当然还有更好的),它将中文进行了urlencode转换。
function q_encode($str)
{
$data = array_filter(explode(" ",$str));
$data = array_flip(array_flip($data));
foreach ($data as $ss) {
  if (strlen($ss)>1 )
   $data_code .= str_replace("%","",urlencode($ss)) . " ";
}
$data_code = trim($data_code);
return $data_code;
}
将转换过后的内容保存至事先定义好的fulltext字段。同样,在查询的时候也需要将查询的关键词进行同样方法的转换。

PHP+Mysql实现UTF8全文搜索的方法

本文讲解一下如何在海量的数据中能够快速的进行全文检索呢?MySQL提供了一个全文索引功能,也就是把字段设置上FULLTEXT索引属性,然后通过SELECT的MATCH AGAINST语句进行查找。

我们开发的一个纯英文站点TouchUs - The Global Yellow Pages & Business Directory(www.touchus.org)就是利用MySQL的这一功能,实现了对十多万条数据的平均全文检索时间小于0.5秒。但是在开发TouchUs的中文网站——城市黄页网时(www.city39.cn),碰到了新的问题。原来英文排版时词和词之间是通过空格区分的,FULLText可以完全支持,但是对中文或者是东亚文字就没有这么简单了,因为中文的词和词之间并没有明显的分隔,所以MySQL不支持中文字符的全文检索。

如何让MySQL也能支持中文的全文检索呢?偶然间产生了一个思路,那就是能不能在中文分词后,通过对中文进行编码转化成英文字符,这样就在中英文间建立一个特定的联系,然后再进行全文检索,这样不就实现了中文的全文索引了吗?经过试验,答案是肯定的。下面是在城市黄页网中实现的具体过程:

1. 建立一个单独的索引表,比如对应members表,我们建立一个members_index表。

用户信息表(members)                    用户信息全文索引表(members_index)

User_id                                              user_id

User_name                                       index_intro

User_introduction                                   

在members_index表的index_intro中加入fulltext索引。

2. 对用户信息表(members)的User_introduction字段内容进行中文分词处理

中文分词的处理过程,可以参考简易中文分词系统http://www.ftphp.com/scws/,在城市黄页网中,我们采用了scws的PHP扩展模块方式来实现中文分词。scws的php扩展模块安装非常简单,只需简单编译配置后即可使用。在具体的php代码中,我们写了如下的函数来实现分词后将分词结果用空格进行连接。

//中文分词函数

function str_fc($str) {

$so = scws_new();

$so->set_charset('utf8');

// 这里没有调用 set_dict 和 set_rule 系统会自动试调用 ini 中指定路径下的词典和规则文件

$so->send_text($str);

while ($tmp = $so->get_result())

{

foreach (  $tmp as $ss ){

$s = trim($ss[word]);

if ( $s )

$mystr .= trim($ss[word]) . " ";

//echo urlencode(trim($ss[word])) . " ";

}

}

return $mystr;

}

该函数返回就是用空格连接的分词结果。

3. 对分词结果进行编码,可以采用多种编码方式,比如base64编码、urlencode编码、汉字转拼音等,对gb2312甚至可以采用区位码编码方式。考虑到存储空间以及便利性,我们采用了PHP的urlencode编码方式。需要注意的是,在编码前,我们可以去掉重复的分词来节约存储空间,编码后要去掉编码结果中的%符号,因为urlencode采用RFC 1738???行编码,会产生很多%,而%在MySQL是通配符。下面是编码过程用到的PHP代码

$data = str_fc($data);  //中文分词

$data = array_filter(explode(" ",$data)); //删除数组空项

$data = array_flip(array_flip($data));  //删除重复项

//对分词结果进行urlcode编码

foreach (  $data as $ss ) {

if (strlen($ss)>1 )

$data_code .= str_replace("%","",urlencode($ss)) . " ";

}

这里的$data_code就是编码后的结果。把编码结果根据user_id存入用户信息全文索

引表(members_index)

4. 在进行搜索处理时,首先对用户输入的关键字进行同样的分词编码处理,然后通过MySQL的SELECT的MATCH  AGAINST语句进行全文快速检索,根据检索结的user_id即可调用用户信息表(members)中的原始数据进行显示,而没有必要进行一次解码重组。

以上MySQL UTF8中文全文检索方法.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Gibt es eine Zukunft für eine Beschäftigung in der klinischen Pharmazie an der Harbin Medical University? (Wie sind die Beschäftigungsaussichten für die klinische Pharmazie an der Harbin Medical University?) Gibt es eine Zukunft für eine Beschäftigung in der klinischen Pharmazie an der Harbin Medical University? (Wie sind die Beschäftigungsaussichten für die klinische Pharmazie an der Harbin Medical University?) Jan 02, 2024 pm 08:54 PM

Wie sind die Beschäftigungsaussichten der klinischen Pharmazie an der Harbin Medical University? Obwohl die Beschäftigungssituation im Land nicht optimistisch ist, haben Absolventen der Pharmazie immer noch gute Beschäftigungsaussichten. Insgesamt ist das Angebot an Pharmaabsolventen geringer als die Nachfrage. Pharmaunternehmen und Pharmafabriken sind die Hauptkanäle für die Aufnahme solcher Absolventen. Auch die Nachfrage nach Talenten in der Pharmaindustrie wächst stetig. Berichten zufolge hat das Angebot-Nachfrage-Verhältnis für Doktoranden in den Hauptfächern Pharmazeutische Präparate und Naturmedizinische Chemie in den letzten Jahren sogar 1:10 erreicht. Beschäftigungsrichtung des Hauptfachs „Klinische Pharmazie“: Nach dem Abschluss können Studierende des Hauptfachs „Klinische Medizin“ in medizinischen und Gesundheitsabteilungen, in der medizinischen Forschung und anderen Abteilungen in der medizinischen Behandlung, Prävention, medizinischen Forschung usw. tätig werden. Beschäftigungspositionen: Medizinischer Vertreter, Pharma-Vertriebsmitarbeiter, Vertriebsmitarbeiter, Vertriebsleiter, Regionaler Vertriebsleiter, Investmentmanager, Produktmanager, Produktspezialist, Krankenpfleger

So laden Sie das Win10-Image schnell herunter So laden Sie das Win10-Image schnell herunter Jan 07, 2024 am 11:33 AM

Kürzlich haben einige Freunde berichtet, wie man Win10-Bilddateien herunterlädt. Da es so viele Bilddateien auf dem Markt gibt, was soll ich tun, wenn ich eine normale Datei zum Herunterladen finden möchte? Heute hat Ihnen der Herausgeber den Link zum Herunterladen des Bildes und die detaillierten Lösungsschritte bereitgestellt. Schauen wir uns diese gemeinsam an. Win10-Image-Schnelldownload und Installations-Tutorial-Download-Link >>> System Home Ghostwin101909-Image 64-Bit-Version v2019.11<<<>>>Win10-Image 64-Bit v2019.07<<<>>>Win10-Image 32-Bit v2019. 07<< <1. Suchen Sie im Internet

So bereinigen Sie den temporären Ordner So bereinigen Sie den temporären Ordner Feb 22, 2024 am 09:15 AM

So bereinigen Sie den temporären Ordner. Während wir den Computer verwenden, sammeln sich nach und nach temporäre Dateien (temporäre Dateien) an. Diese temporären Dateien werden generiert, wenn wir den Computer nutzen, z. B. Cache-Dateien beim Surfen im Internet, temporäre Dateien bei der Installation von Software usw. Wenn der temporäre Ordner über einen längeren Zeitraum nicht bereinigt wird, kann dies viel Speicherplatz beanspruchen und die Geschwindigkeit des Computers beeinträchtigen. Daher ist das regelmäßige Bereinigen des temporären Ordners ein notwendiger Schritt, um die Computerleistung aufrechtzuerhalten. Im Folgenden stellen wir einige einfache Möglichkeiten zum Bereinigen des temporären Ordners vor. Methode 1: Manuell reinigen

So setzen Sie das Win10-System zurück So setzen Sie das Win10-System zurück Jun 29, 2023 pm 03:14 PM

Wie setze ich das Win10-System zurück? Heutzutage verwenden viele Freunde gerne Computer mit dem Win10-System. Allerdings werden sie bei der Verwendung von Computern zwangsläufig auf einige unlösbare Probleme stoßen. Wie sollten Sie das also tun? Folgen wir dem Editor, um das Tutorial zum Zurücksetzen des Win10-Systems anzusehen. Benutzer in Not sollten es nicht verpassen. Anleitung zum Zurücksetzen des Win10-Systems 1. Klicken Sie auf Windows und wählen Sie Einstellungen. 2. Klicken Sie auf Update und Sicherheit. 3. Wählen Sie Wiederherstellen. 4. Klicken Sie rechts auf Start, um diesen Computer zurückzusetzen. Das Obige ist der gesamte Inhalt von [So setzen Sie das Win10-System zurück – Tutorial zum Zurücksetzen des Win10-Systems]. Weitere spannende Tutorials sind auf dieser Website verfügbar!

So überprüfen Sie die Win11-Computerkonfiguration So überprüfen Sie die Win11-Computerkonfiguration Jun 29, 2023 pm 12:15 PM

Wie überprüfe ich die Win11-Computerkonfiguration? Das Win11-System ist eine sehr praktische Computer-Betriebssystemversion. Diese Version bietet Benutzern umfangreiche Funktionen, die es Benutzern ermöglichen, ein besseres Computer-Bedienerlebnis zu haben. Daher sind viele Freunde, die Computer verwenden, neugierig auf die spezifische Konfiguration ihres Computers im Win11-System? Viele Freunde wissen nicht, wie man im Detail vorgeht. Der Herausgeber hat unten ein Tutorial zum Anzeigen der Win11-Computerkonfiguration zusammengestellt. Tutorial zur Win11-Computerkonfigurationsansicht 1. Klicken Sie auf das Windows-Symbol in der Taskleiste unten oder drücken Sie die „Windows-Taste“ auf der Tastatur, um das Startmenü zu öffnen. 2. Suchen Sie im Startmenü nach „Einstellungen“ oder „sett“.

Lösen Sie das Problem der Umgebungserkennung bei der Neuinstallation des Systems Lösen Sie das Problem der Umgebungserkennung bei der Neuinstallation des Systems Jan 08, 2024 pm 03:33 PM

So lösen Sie das Problem, dass der Umgebungstest bei der Neuinstallation des Systems fehlschlägt und neu geschrieben werden muss. Sie können Antivirensoftware wie Mobile Manager für Antivirus 2 installieren Dateien werden im Mobiltelefon gespeichert, wodurch der laufende Speicher des Mobiltelefons belegt wird. Löschen Sie einfach den Telefon-Cache, um dieses Problem zu lösen. 3. Der Telefonspeicher ist durch gespeicherte Software und Dateien zu stark belegt. Das häufige Löschen nicht benötigter Dateien und Software ist möglich Verwenden Sie das neue System direkt von der Systemfestplatte! Sie können für die Installation einen USB-Stick oder eine Festplatte verwenden, was sehr schnell geht. Der Schlüssel liegt jedoch darin, eine Systemfestplatte mit guter Kompatibilität zu verwenden (unterstützt die Installation im IDE-, ACHI- und RAID-Modus) und diese kann automatisch und dauerhaft aktiviert werden, was überprüft wurde. Also

Wie füge ich die Werte von HTML-Elementen hinzu? Wie füge ich die Werte von HTML-Elementen hinzu? Sep 16, 2023 am 08:41 AM

In diesem Artikel erfahren Sie, wie Sie den Wert eines Elements in HTML hinzufügen. Wir verfügen über ein grundlegendes Verständnis des Wertattributs in HTML und der Verwendung des Wertattributs. Freuen wir uns auf ein besseres Verständnis des HTMLvalue-Attributs. In HTML wird das Wertattribut verwendet, um den Wert des Elements zu beschreiben, mit dem es verwendet wird. Es hat für verschiedene HTML-Komponenten unterschiedliche Bedeutungen. Verwendung – Kann mit den Elementen ,,,,, und verwendet werden. -Wenn das Wertattribut vorhanden ist, gibt es den Standardwert des Eingabeelements an. Es hat unterschiedliche Bedeutungen für verschiedene Eingabetypen: wenn die Schaltfläche in „Schaltfläche“, „Zurücksetzen“ und &qu erscheint

So setzen Sie das Passwort in MySQL zurück So setzen Sie das Passwort in MySQL zurück Feb 18, 2024 pm 12:41 PM

MySQL ist ein relationales Open-Source-Datenbankverwaltungssystem, das in verschiedenen Arten der Anwendungsentwicklung weit verbreitet ist. Bei Verwendung der MySQL-Datenbank müssen Sie häufig das Passwort ändern, um die Sicherheit der Datenbank zu verbessern. In diesem Artikel wird anhand spezifischer Codebeispiele erläutert, wie Sie das MySQL-Passwort ändern. In MySQL können Sie das Passwort ändern, indem Sie die folgenden Schritte ausführen: Melden Sie sich beim MySQL-Datenbankserver an: Öffnen Sie eine Eingabeaufforderung oder ein Terminalfenster und führen Sie den folgenden Befehl aus: mysql-uroo

See all articles