MYSQL入门学习之三:全文本搜索_MySQL
bitsCN.com
MYSQL入门学习之三:全文本搜索
一、理解全文本搜索
1、MyISAM支持全文本搜索,而InnoDB不支持。
2、在使用全文本搜索时,MySQL不需要分别查看每个行,不需要分别分析和处理每个词。MySQL创建指定列中各词的一个索引,搜索可以针对这些词进行。这样MySQL可以快速有效地决定哪些词匹配,哪些词不匹配,它们匹配的频率,等等。
二、使用全文本搜索
1、为了进行全文本搜索,必须索引被搜索的列,而且要随着数据的改变不断地重新索引。在对表列进行适当设计后,MySQL会自动进行所有的索引和重新索引。
在索引之后,SELECT可与Match()和Against()一起使用以实际执行搜索。
2、一般在创建表时启用全文本搜索。
[sql]
create table productnotes
(
note_id int not nullauto_increment,
note_text text null,
primary key(note_id),
fulltext(note_text)
)engine=MyISAM;
在定义之后,MySQL自动维护该索引。在增加、更新或删除行时,索引随之自动更新。
3、不要在导入数据时使用FULLTEXT。
4、进行全文本搜索
Match()指定被搜索的列,Against()指定要使用的搜索表达式。
[sql]
mysql> select * from productnotes
-> whereMatch(note_text) Against('designed');
+---------+---------------------------------------------------------------------
------------------------------------------------------+
| note_id | note_text
|
+---------+---------------------------------------------------------------------
------------------------------------------------------+
| 6 | LimsLink isdesigned to interface output from chromatography data sy
stems (CDSs) to LIMS. |
| 5 | This line ofproprietary reagents, containers, and automation tools
is designed for genomics and drug discovery research. |
+---------+---------------------------------------------------------------------
------------------------------------------------------+
2 rows in set (0.03 sec)
5、传递给Match()的值必须与FULLTEXT()定义中的相同。如果指定多个列,则必须列出它们(而且次序正确)。
6、除非使用BINARY方式,否则全文本搜索不区分大小写。
[sql]
mysql> select * from productnotes
-> where BINARYMatch(note_text) Against('line');
+---------+---------------------------------------------------------------------
------------------------------------------------------+
| note_id | note_text
|
+---------+---------------------------------------------------------------------
------------------------------------------------------+
| 5 | This line ofproprietary reagents, containers, and automation tools
is designed for genomics and drug discovery research. |
+---------+---------------------------------------------------------------------
------------------------------------------------------+
1 row in set (0.05 sec)
7、全文本搜索的一个重要部分就是对结果排序。具有较高等级的行先返回。
等级由MySQL根据行中词的数目、唯一词的数目、整个索引中词的总数以及包含该词的行的数目计算出来。文本中词先前的行的等级值比词靠后的行的等级值高。
[sql]
mysql> select note_id, Match(note_text) Against('This line')as rank,note_text
-> fromproductnotes
-> whereMatch(note_text) Against('This line');
+---------+------------------+--------------------------------------------------
----------------------------------------------------------------------------+
| note_id | rank | note_text
|
+---------+------------------+--------------------------------------------------
----------------------------------------------------------------------------+
| 5 |0.81339610830754 | This line of proprietary reagents,. containers, a
nd automation tools is designed. for genomics and drugdiscovery .research. |
| 7 |0.76517958501676 | specificities include both alpha–beta and beta–
beta. This line from chromatography .data systems (CDSs) and toLIMS. |
+---------+------------------+--------------------------------------------------
----------------------------------------------------------------------------+
2 rows in set (0.00 sec)
8、查询扩展
在使用查询扩展时,MySQL对数据和索引进行两遍扫描来完成搜索。
首先,进行一个基本的全文本搜索,找出与搜索条件匹配的所有行;
其次,MySQL检查这些匹配行并选择所有有用的词;
再次,MySQL再次进行全文本搜索,这次不仅使用原来的条件,而且还使用所有有用的词。
利用查询扩展,能找出可能相关的结果,即使它们并不精确包含所查找的词。
表中的行越多,使用查询扩展返回的结果越好。
查询扩展功能在MySQL4.1.1中引入。
[sql]
mysql> select note_id, Match(note_text) Against('This line')as rank,note_text
-> fromproductnotes
-> where Match(note_text)Against('This line' with query expansion);
+---------+------------------+--------------------------------------------------
----------------------------------------------------------------------------+
| note_id | rank | note_text
|
+---------+------------------+--------------------------------------------------
----------------------------------------------------------------------------+
| 5 | 0.81339610830754| This line of proprietary reagents,. containers, a
nd automation tools is designed. for genomics and drugdiscovery .research. |
| 7 |0.76517958501676 | specificities include both alpha–beta and beta–
beta. This line from chromatography .data systems (CDSs) and toLIMS. |
| 3 | 0 | Human S-100. monoclonal.and polyclonal specifici
ties include both alpha–beta and beta–beta isoforms. |
| 6 | 0 | LimsLink is .designed to interfaceoutput. from c
hromatography .data systems (CDSs) and to LIMS. |
| 1 | 0 | PepTool allows users tostore, manage. analyze, a
nd visualize protein data. |
+---------+------------------+--------------------------------------------------
----------------------------------------------------------------------------+
5 rows in set (0.00 sec)
9、布尔文本搜索(boolean mode)
以布尔方式,可以提供关于如下内容的细节:
要匹配的词;
要排斥的词;
排列提示;(指定某些词比其他词更重要)
表达式分组;
另外一些内容。
[sql]
mysql> select note_id,note_text
-> fromproductnotes
-> whereMatch(note_text) Against('line' in boolean mode);
+---------+---------------------------------------------------------------------
---------------------------------------------------------+
| note_id | note_text
|
+---------+---------------------------------------------------------------------
---------------------------------------------------------+
| 5 | This line ofproprietary reagents,. containers, and automation tools
is designed. for genomicsand drug discovery .research. |
| 7 | specificitiesinclude both alpha–beta and beta–beta. This line fro
m chromatography .data systems (CDSs) and to LIMS. |
+---------+---------------------------------------------------------------------
---------------------------------------------------------+
2 rows in set (0.00 sec)
即使没有FULLTEXT索引也可以使用布尔文本搜索。但是非常缓慢。
mysql> select note_id,note_text/*匹配line且不包含systems*/
-> fromproductnotes
-> whereMatch(note_text) Against('line -systems*' in boolean mode);
+---------+---------------------------------------------------------------------
---------------------------------------------------------+
| note_id | note_text
|
+---------+---------------------------------------------------------------------
---------------------------------------------------------+
| 5 | This line ofproprietary reagents,. containers, and automation tools
is designed. forgenomics and drug discovery .research. |
+---------+---------------------------------------------------------------------
---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select note_id,note_text/*匹配line且匹配systems*/
-> fromproductnotes
-> whereMatch(note_text) Against('+line +systems' in boolean mode);
+---------+---------------------------------------------------------------------
---------------------------------------------------+
| note_id | note_text
|
+---------+---------------------------------------------------------------------
---------------------------------------------------+
| 7 | specificitiesinclude both alpha–beta and beta–beta. This line fro
m chromatography .data systems (CDSs) and to LIMS. |
+---------+---------------------------------------------------------------------
---------------------------------------------------+
1 row in set (0.00 sec)
mysql> select note_id,note_text/*匹配line或匹配systems*/
-> fromproductnotes
-> whereMatch(note_text) Against('line systems' in boolean mode);
+---------+---------------------------------------------------------------------
---------------------------------------------------------+
| note_id | note_text
|
+---------+---------------------------------------------------------------------
---------------------------------------------------------+
| 5 | This line ofproprietary reagents,. containers, and automation tools
is designed. forgenomics and drug discovery .research. |
| 6 | LimsLink is.designed to interface output. from chromatography .data
systems (CDSs) and toLIMS. |
| 7 | specificitiesinclude both alpha–beta and beta–beta. This line fro
m chromatography .data systems (CDSs) and to LIMS. |
+---------+---------------------------------------------------------------------
---------------------------------------------------------+
3 rows in set (0.00 sec)
mysql> select note_id,note_text/*匹配短语*/
-> fromproductnotes
-> whereMatch(note_text) Against('"This line"' in boolean mode);
+---------+---------------------------------------------------------------------
---------------------------------------------------------+
| note_id | note_text
|
+---------+---------------------------------------------------------------------
---------------------------------------------------------+
| 5 | This line ofproprietary reagents,. containers, and automation tools
is designed. forgenomics and drug discovery .research. |
| 7 | specificitiesinclude both alpha–beta and beta–beta. This line fro
m chromatography .data systems (CDSs) and to LIMS. |
+---------+---------------------------------------------------------------------
---------------------------------------------------------+
2 rows in set (0.00 sec)
10、使用说明
l 在索引全文本数据时,短词被忽略且从索引中排除。短词的定义为那些具有3个或脸上以下字符的词(如果需要,这个数目可以更新)。
l MySQL带有一个内建的非用词(stopword)列表,这些词在索引全文本数据时总是被忽略。如果需要,可以覆盖这个列表。
l MySQL规定了一条50%规则,如果一个词出现在50%以上的行中,则将它作为一个非用词忽略。50%规则不用于IN BOOLEAN MODE。
l 如果表中的行数少于3行,则全文本搜索不返回结果(因为每个词或者不出现,或者至少出现在50%的行中)。
l 忽略词中的单引号。如,don’t索引为dont。
l 不具有词分隔符的语言不能恰当地返回全文本搜索结果。
bitsCN.com

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Cara menggunakan Carian Terperinci Baidu Enjin carian Baidu kini merupakan salah satu enjin carian yang paling biasa digunakan di China. Ia menyediakan pelbagai fungsi carian, salah satunya ialah carian lanjutan. Carian lanjutan boleh membantu pengguna mencari maklumat yang mereka perlukan dengan lebih tepat dan meningkatkan kecekapan carian. Jadi, bagaimana untuk menggunakan carian lanjutan Baidu? Langkah pertama ialah membuka halaman utama enjin carian Baidu. Pertama, kita perlu membuka laman web rasmi Baidu, iaitu www.baidu.com. Ini adalah pintu masuk ke carian Baidu. Dalam langkah kedua, klik butang Carian Terperinci. Di sebelah kanan kotak carian Baidu, terdapat

Bagaimanakah Xianyu mencari pengguna? Dalam perisian Xianyu, kami boleh mencari secara langsung pengguna yang kami ingin berkomunikasi dalam perisian. Tetapi saya tidak tahu cara mencari pengguna. Lihat sahaja di kalangan pengguna selepas mencari. Seterusnya ialah pengenalan yang editor bawa kepada pengguna tentang cara mencari pengguna Jika anda berminat, datang dan lihat! Bagaimana untuk mencari pengguna di Xianyu Jawapan: Lihat butiran di kalangan pengguna yang dicari Pengenalan: 1. Masukkan perisian dan klik pada kotak carian. 2. Masukkan nama pengguna dan klik Cari. 3. Kemudian pilih [Pengguna] di bawah kotak carian untuk mencari pengguna yang sepadan.

Dalam era yang dikuasai oleh kecerdasan, perisian pejabat juga telah menjadi popular, dan borang Wps diterima pakai oleh majoriti pekerja pejabat kerana fleksibiliti mereka. Di tempat kerja, kita dikehendaki bukan sahaja untuk belajar membuat borang yang mudah dan memasukkan teks, tetapi juga untuk menguasai lebih banyak kemahiran operasi untuk menyelesaikan tugasan dalam kerja sebenar Laporan dengan data dan menggunakan borang adalah lebih mudah, jelas dan tepat. Pelajaran yang kami bawa kepada anda hari ini ialah: Jadual WPS tidak dapat mencari data yang anda cari. Mengapa sila semak lokasi pilihan carian? 1. Mula-mula pilih jadual Excel dan klik dua kali untuk membukanya. Kemudian dalam antara muka ini, pilih semua sel. 2. Kemudian dalam antara muka ini, klik pilihan "Edit" dalam "Fail" dalam bar alat atas. 3. Kedua, dalam antara muka ini, klik "

Perisian aplikasi Taobao mudah alih menyediakan banyak produk yang bagus Anda boleh membelinya pada bila-bila masa dan di mana-mana sahaja, dan semuanya adalah tulen. Anda boleh mencari dan membeli secara bebas mengikut kehendak anda. Bahagian produk dalam kategori yang berbeza semuanya terbuka pengguna menggunakannya untuk kali pertama Jika anda tidak tahu bagaimana untuk mencari produk, sudah tentu anda hanya perlu memasukkan kata kunci dalam bar carian untuk mencari semua hasil produk Anda tidak boleh berhenti membeli-belah editor akan menyediakan kaedah dalam talian terperinci untuk pengguna Taobao mudah alih mencari nama kedai. 1. Mula-mula buka aplikasi Taobao pada telefon bimbit anda,

Pelajari Pygame dari awal: tutorial pemasangan dan konfigurasi lengkap, contoh kod khusus diperlukan Pengenalan: Pygame ialah perpustakaan pembangunan permainan sumber terbuka yang dibangunkan menggunakan bahasa pengaturcaraan Python Ia menyediakan pelbagai fungsi dan alatan, membolehkan pembangun mencipta pelbagai jenis dengan mudah permainan. Artikel ini akan membantu anda mempelajari Pygame dari awal, dan menyediakan tutorial pemasangan dan konfigurasi yang lengkap, serta contoh kod khusus untuk membolehkan anda bermula dengan cepat. Bahagian Pertama: Memasang Python dan Pygame Pertama, pastikan anda mempunyai

Semasa mengedit kandungan teks dalam Word, anda kadangkala perlu memasukkan simbol formula. Sesetengah lelaki tidak tahu cara memasukkan nombor akar dalam Word, jadi Xiaomian meminta saya untuk berkongsi dengan rakan saya tutorial tentang cara memasukkan nombor akar dalam Word. Semoga membantu kawan-kawan. Mula-mula, buka perisian Word pada komputer anda, kemudian buka fail yang ingin anda edit, dan gerakkan kursor ke lokasi yang anda perlukan untuk memasukkan tanda akar, rujuk contoh gambar di bawah. 2. Pilih [Sisipkan], dan kemudian pilih [Formula] dalam simbol. Seperti yang ditunjukkan dalam bulatan merah dalam gambar di bawah: 3. Kemudian pilih [Insert New Formula] di bawah. Seperti yang ditunjukkan dalam bulatan merah dalam gambar di bawah: 4. Pilih [Radical], dan kemudian pilih radikal yang sesuai. Seperti yang ditunjukkan dalam bulatan merah dalam gambar di bawah:

Pesona Pembelajaran Bahasa C: Membuka Potensi Pengaturcara Dengan perkembangan teknologi yang berterusan, pengaturcaraan komputer telah menjadi satu bidang yang telah menarik perhatian ramai. Di antara banyak bahasa pengaturcaraan, bahasa C sentiasa digemari oleh pengaturcara. Kesederhanaan, kecekapan dan aplikasinya yang luas menjadikan pembelajaran bahasa C sebagai langkah pertama untuk ramai orang memasuki bidang pengaturcaraan. Artikel ini akan membincangkan daya tarikan mempelajari bahasa C dan cara membuka kunci potensi pengaturcara dengan mempelajari bahasa C. Pertama sekali, daya tarikan mempelajari bahasa C terletak pada kesederhanaannya. Berbanding dengan bahasa pengaturcaraan lain, bahasa C

Cakera Awan Alibaba, alat storan popular ini, bukan sahaja membantu kami mengurus sumber peribadi dengan cekap, tetapi juga menyediakan banyak fungsi yang mudah. Ramai pengguna mungkin tidak dapat mencari sumber cakera awan semasa mencari, jadi mereka ingin mencari semua sumber dalam keseluruhan cakera Jadi di bawah, editor laman web ini akan menjawab soalan ini secara terperinci dan berkongsi kaedah carian tertentu ingin tahu, sila datang dan ikuti artikel ini untuk mengetahui lebih lanjut! Cara mencari sumber orang lain dalam Cakera Awan Alibaba 1. Mula-mula, cari laluan khusus fail sumber dalam direktori folder Cakera Awan Alibaba untuk mencari folder yang sepadan. 2. Kemudian gunakan fungsi carian fail dan masukkan kata kunci yang anda ingin cari untuk mencari kandungan fail yang berkaitan. 3. Kemudian kami berkongsi pautan dengan orang lain untuk terus mencari dan memuat turun
