Jadual Kandungan
回复内容:
Rumah pembangunan bahagian belakang tutorial php 最近要做一个全文搜索功能,不知道这块思路和技术这块怎么样?

最近要做一个全文搜索功能,不知道这块思路和技术这块怎么样?

Jun 06, 2016 pm 08:19 PM
mysql php

最近要做全文搜索功能,用户输入框输入关键字,可以搜索到匹配该关键字的文章。
支持对文章内容匹配和文章标题匹配。想问下实现起来复杂么?
有哪些比较好的解决方案?

开发语言php,数据库mysql

回复内容:

最近要做全文搜索功能,用户输入框输入关键字,可以搜索到匹配该关键字的文章。
支持对文章内容匹配和文章标题匹配。想问下实现起来复杂么?
有哪些比较好的解决方案?

开发语言php,数据库mysql

给楼主一个选择方案:http://www.xunsearch.com/site/usercase
也是开源的,同时也提供商业服务,如果时间充裕的话,可以考虑自主开发,否则选择开源方案吧,而且社区比较活跃的

sphinx的中文分词版coreseek。
http://www.coreseek.cn/

我觉得 elasticsearch 还是不错的,java写的 就是一个搜搜引擎 而且是分布式的 也可以做日志搜索

  1. 数据库实现的话可扩展性不高。数据量大起来了,性能会下降。

  2. 开源方案有很多,如lucene,需求简单的话写来来也很快。也可以使用基于lucene的solr(http://lucene.apache.org/solr/)


最最最方便,扩展性强的,建议使用阿里与的opensearch,简直太简单方便了。

开源中文搜索引擎XunSearch:
http://www.cloud-sun.com/view/product
http://www.xunsearch.com/doc/php/guide/start.installation
1.性能劲爆:XunSearch单库最多支持40亿条数据,在5亿网页大约1.5TB的数据中检索时间不超过1秒(非缓存).
2.简单易用:前端是使用脚本语言PHP编写的开发工具包.API简单清晰,开发难度极低,提供全中文的示例代码,文档,辅助脚本工具等.
3.功能丰富:除支持基础的自定义分词,字段检索,布尔搜索外,还直接支持用户急需的相关搜索,拼音搜索,搜索建议等专业功能.
XunSearch作者同时是中文分词SCWS(提供有PECL扩展和纯PHP实现以及完整中文词典)的作者马明练hightman.
http://www.xunsearch.com/scws/index.php
PHP驱动的segmentfault.com的站内搜索用的就是XunSearch.

XunSearch搜索建议和纠错(比如拼音搜索):
http://www.xunsearch.com/doc/php/guide/search.fix

或者你可以利用MySQL InnoDB/MyISAM内置的FullText全文索引字段类型,用PECL SCWS对文件内容和标题字段分词后存入一个FullText的分词字段比如article_fc text,FULLTEXT (article_fc),然后用户输入时用PECL SCWS分词后再用MATCH AGAINST语句进行全文搜索:

<code>SELECT * FROM articles WHERE MATCH(article_fc) AGAINST('word1 word2');</code>
Salin selepas log masuk

article_fc字段所在的表也可以和标题正文所在的文章表分开,查出后连接文章表读出标题正文即可.甚至可以用SQLite里建一个分词表,把分词内容都存到SQLite中,减轻MySQL压力.因为SQLite也是支持全文检索的,而且全文检索是一个读操作,SQLite的读性能是非常好的.

更简单粗暴的是,既不依赖PHP SCWS分词,也不依赖MySQL(InnoDB/MyISAM)/SQLite/XunSearch全文检索,直接提示用户分开关键词输入,然后用SQL LIKE进行模糊查询,数据量不大的情况下是可行且简单的方案:

<code>SELECT * FROM articles WHERE content LIKE '%word1%' OR content LIKE '%word2%';
SELECT * FROM articles WHERE content REGEXP 'word1|word2';</code>
Salin selepas log masuk

Solr,apache的一个项目

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kurangkan penyimpanan pangkalan data MySQL RDS dengan sifar downtime menggunakan AWS Blue/Green Deployment Kurangkan penyimpanan pangkalan data MySQL RDS dengan sifar downtime menggunakan AWS Blue/Green Deployment Apr 08, 2025 pm 12:42 PM

Jurutera DevOps sering menghadapi cabaran pengoptimuman pangkalan data RDS dan kemas kini, terutamanya dalam situasi beban tinggi, di mana kaedah tradisional terdedah kepada risiko downtime. Artikel ini memperkenalkan strategi penempatan biru/hijau AWS untuk mencapai kemas kini sifar downtime pangkalan data RDS. Katakan selamat tinggal kepada mimpi buruk Downtime Downtime Downtime! Artikel ini akan menerangkan strategi penempatan biru/hijau secara terperinci dan menyediakan langkah -langkah operasi dalam persekitaran AWS untuk membantu anda mengemas kini contoh pangkalan data RDS tanpa menjejaskan ketersediaan perkhidmatan. Penyediaan Pertama, menyelaraskan pasukan pembangunan dan pilih tempoh dengan trafik beban kerja terendah untuk kemas kini. DevOps yang baik mengamalkan nasihat untuk memberitahu pasukan terlebih dahulu. Contoh ini menunjukkan bagaimana untuk mengurangkan ruang penyimpanan contoh pangkalan data dengan sifar downtime menggunakan penggunaan biru/hijau. Anda boleh menggunakan konsol AWSRDS

Cara menyelesaikan MySQL tidak dapat dimulakan Cara menyelesaikan MySQL tidak dapat dimulakan Apr 08, 2025 pm 02:21 PM

Terdapat banyak sebab mengapa permulaan MySQL gagal, dan ia boleh didiagnosis dengan memeriksa log ralat. Penyebab umum termasuk konflik pelabuhan (periksa penghunian pelabuhan dan ubah suai konfigurasi), isu kebenaran (periksa keizinan pengguna yang menjalankan perkhidmatan), ralat fail konfigurasi (periksa tetapan parameter), rasuah direktori data (memulihkan data atau membina semula ruang meja), isu ruang jadual InnoDB (semak fail ibdata1) Apabila menyelesaikan masalah, anda harus menganalisisnya berdasarkan log ralat, cari punca utama masalah, dan mengembangkan tabiat sandaran data secara teratur untuk mencegah dan menyelesaikan masalah.

Adakah mysql mengoptimumkan jadual kunci Adakah mysql mengoptimumkan jadual kunci Apr 08, 2025 pm 01:51 PM

MySQL menggunakan kunci bersama dan kunci eksklusif untuk menguruskan keserasian, menyediakan tiga jenis kunci: kunci meja, kunci baris dan kunci halaman. Kunci baris boleh meningkatkan keserasian, dan menggunakan pernyataan kemas kini untuk menambah kunci eksklusif ke baris. Kunci pesimis menganggap konflik, dan kunci optimis menilai data melalui nombor versi. Masalah Jadual Kunci Biasa Manifest sebagai pertanyaan perlahan, gunakan perintah ProcessList Show untuk melihat pertanyaan yang dipegang oleh kunci. Langkah -langkah pengoptimuman termasuk memilih indeks yang sesuai, mengurangkan skop transaksi, operasi batch, dan mengoptimumkan penyataan SQL.

Cara menggunakan substring_index di mysql Cara menggunakan substring_index di mysql Apr 08, 2025 pm 02:09 PM

Dalam operasi pangkalan data MySQL, pemprosesan rentetan adalah pautan yang tidak dapat dielakkan. Fungsi substring_index direka untuk ini, yang dapat mengekstrak substrings secara efisien berdasarkan pemisah. Contoh Aplikasi Fungsi Substring_index Contoh berikut menunjukkan fleksibiliti dan kepraktisan fungsi substring_index: mengekstrak bahagian -bahagian tertentu dari URL sebagai contoh, mengekstrak nama domain: selectsubstring_index ('www.mysql.com', '.', 2); Ekstrak lanjutan fail untuk mudah mendapatkan sambungan fail: selectSubstring_index ('file.pdf', '.',-1); Pemprosesan tidak wujud

Adakah mysql memerlukan pelayan Adakah mysql memerlukan pelayan Apr 08, 2025 pm 02:12 PM

Untuk persekitaran pengeluaran, pelayan biasanya diperlukan untuk menjalankan MySQL, atas alasan termasuk prestasi, kebolehpercayaan, keselamatan, dan skalabilitas. Pelayan biasanya mempunyai perkakasan yang lebih kuat, konfigurasi berlebihan dan langkah keselamatan yang lebih ketat. Untuk aplikasi kecil, rendah, MySQL boleh dijalankan pada mesin tempatan, tetapi penggunaan sumber, risiko keselamatan dan kos penyelenggaraan perlu dipertimbangkan dengan teliti. Untuk kebolehpercayaan dan keselamatan yang lebih besar, MySQL harus digunakan di awan atau pelayan lain. Memilih konfigurasi pelayan yang sesuai memerlukan penilaian berdasarkan beban aplikasi dan jumlah data.

Adakah mysql memerlukan internet Adakah mysql memerlukan internet Apr 08, 2025 pm 02:18 PM

MySQL boleh berjalan tanpa sambungan rangkaian untuk penyimpanan dan pengurusan data asas. Walau bagaimanapun, sambungan rangkaian diperlukan untuk interaksi dengan sistem lain, akses jauh, atau menggunakan ciri -ciri canggih seperti replikasi dan clustering. Di samping itu, langkah -langkah keselamatan (seperti firewall), pengoptimuman prestasi (pilih sambungan rangkaian yang betul), dan sandaran data adalah penting untuk menyambung ke Internet.

Bolehkah Mysql dan Mariadb wujud bersama Bolehkah Mysql dan Mariadb wujud bersama Apr 08, 2025 pm 02:27 PM

MySQL dan Mariadb boleh wujud bersama, tetapi perlu dikonfigurasikan dengan berhati -hati. Kuncinya adalah untuk memperuntukkan nombor port dan direktori data yang berbeza untuk setiap pangkalan data, dan menyesuaikan parameter seperti peruntukan memori dan saiz cache. Konfigurasi sambungan, konfigurasi aplikasi, dan perbezaan versi juga perlu dipertimbangkan dan perlu diuji dengan teliti dan dirancang untuk mengelakkan perangkap. Menjalankan dua pangkalan data secara serentak boleh menyebabkan masalah prestasi dalam situasi di mana sumber terhad.

Kunci utama MySQL boleh menjadi batal Kunci utama MySQL boleh menjadi batal Apr 08, 2025 pm 03:03 PM

Kunci utama MySQL tidak boleh kosong kerana kunci utama adalah atribut utama yang secara unik mengenal pasti setiap baris dalam pangkalan data. Jika kunci utama boleh kosong, rekod tidak dapat dikenal pasti secara unik, yang akan membawa kepada kekeliruan data. Apabila menggunakan lajur integer sendiri atau UUIDs sebagai kunci utama, anda harus mempertimbangkan faktor-faktor seperti kecekapan dan penghunian ruang dan memilih penyelesaian yang sesuai.

See all articles