Jadual Kandungan
安装
配置
mysql 数据源
sphinx 配置文件
创建索引
错误集
libmysqlclient.so.18
Invalid cross-device link
查看检索是否启动
WARNING attribute not found
ERROR index No fields in schema
WARNING sql_query_info removed from Sphinx
word overrun buffer
Rumah pangkalan data tutorial mysql Sphinx 使用记录

Sphinx 使用记录

Jun 07, 2016 pm 04:39 PM
sphinx muat turun guna Pasang Kod sumber pada masa ini Rekod perlukan

安装 安装前需要先去官网下载源码. 目前最新版本是 2.2.5-release, 点击下载即可。 当然,如果你想直接在命令行下载,直接下载我这个版本也行,就是不知道会不会版本太久。 tiankonguse:~ $ cd /usr/local/srctiankonguse:src $ su root -tiankonguse:src #

安装

安装前需要先去官网下载源码.
目前最新版本是 2.2.5-release, 点击下载即可。

当然,如果你想直接在命令行下载,直接下载我这个版本也行,就是不知道会不会版本太久。

tiankonguse:~ $ cd /usr/local/src
tiankonguse:src $ su root -
tiankonguse:src # wget http://sphinxsearch.com/files/sphinx-2.2.5-release.tar.gz
Salin selepas log masuk

然后解压缩,命令就不用说了吧

tiankonguse:src # tar zxvf filename.tar.gz
Salin selepas log masuk

后来听说 sphinx 有两种安装方式

  1. 单独安装,查询时采用API调用。
  2. 使用插件方式把sphinx编译成一个mysql插件并使用特定的sql语句进行检索。

这里我选择第一种方式,毕竟把 sphinx 和 mysql 耦合在一起的话, 将来将成为一个很大的坑。

sphinx 查询出来的是 id, 然后会进行二次查询得到想要的数据。

下面的命令都是在 root 权限下操作的。

tiankonguse:sphinx-2.2.5-release # ./configure –prefix=/usr/local/sphinx
tiankonguse:sphinx-2.2.5-release # make && make install
Salin selepas log masuk

可以使用 --prefix 指向sphinx的安装路径 可以使用 --with-mysql 指向mysql的安装路径。

安装完毕后查看一下 /usr/local/sphinx 下是否有 三个目录 bin etc var,如有,则安装无误!

tiankonguse:sphinx-2.2.5-release # cd /usr/local/sphinx/
tiankonguse:sphinx # ls
bin/  etc/  share/  var/
Salin selepas log masuk

配置

mysql 数据源

由于我使用的是 mysql, 所以需要为 sphinx 创建对应的db。

# server:127.0.0.1
# database : d_sphinx_testdb
# table: t_sphinx_article
CREATE SCHEMA IF NOT EXISTS `d_sphinx_testdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `d_sphinx_testdb` ;
CREATE TABLE `d_sphinx_testdb`.`t_sphinx_article` (
  `c_id` INT NOT NULL AUTO_INCREMENT,
  `c_title` VARCHAR(45) NOT NULL DEFAULT '',
  `c_content` VARCHAR(45) NOT NULL DEFAULT '',
  `c_comment_num` VARCHAR(45) NOT NULL DEFAULT 0,
  PRIMARY KEY (`c_id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
Salin selepas log masuk

sphinx 配置文件

首先需要找到需要配置的文件以及需要配置的内容。

我们需要配置的是 /usr/local/sphinx/sphinx.conf 文件里面的数据库的信息。

tiankonguse:sphinx # cd etc
tiankonguse:etc # 
tiankonguse:etc # ls
example.sql  sphinx-min.conf.dist  sphinx.conf.dist
tiankonguse:etc #  cp sphinx.conf.dist sphinx.conf
tiankonguse:etc # ls
example.sql  sphinx-min.conf.dist  sphinx.conf  sphinx.conf.dist
skyyuan:etc $ vi sphinx.conf
Salin selepas log masuk

可以看到下面的内容设置数据源 source

#############################################################################
## data source definition
#############################################################################
source d_sphinx_testdb 
{
    # data source type. mandatory, no default value
    # known types are mysql, pgsql, mssql, xmlpipe, xmlpipe2, odbc
    type            = mysql  # 数据库类型
    # some straightforward parameters for SQL source types
    #数据库主机地址
    sql_host        = 127.0.0.1 
    #数据库用户名
    sql_user        = root      
    #数据库密码
    sql_pass        = pwd       
    #数据库名称
    sql_db          = d_sphinx_testdb  
    # 数据库采用的端口
    sql_port        = 3306  
    # pre-query, executed before the main fetch query
    # multi-value, optional, default is empty list of queries
    #执行sql前要设置的字符集 
    sql_query_pre   = SET NAMES UTF8 
    # main document fetch query mandatory, integer document ID field MUST be the first selected column
    # 全文检索要显示的内容,在这里尽可能不使用where或group by,将where与groupby的内容交给sphinx,由sphinx进行条件过滤与groupby效率会更高
    # select 出来的字段必须至少包括一个唯一主键(ARTICLESID)以及要全文检索的字段,你计划原本在where中要用到的字段也要select出来,这里不需要使用orderby
    sql_query = SELECT c_id,c_title,c_content,c_comment_num FROM t_sphinx_article
    #####以下是用来过滤或条件查询的属性############
    #sql_attr_ 开头的表示一些属性字段,你原计划要用在where,orderby,groupby中的字段要在这里定义
    # unsigned integer attribute declaration
    sql_attr_uint = c_comment_num  # 无符号整数属性
    sql_attr_uint = c_id  # 无符号整数属性
    # boolean attribute declaration
    # sql_attr_bool     = is_deleted
    # bigint attribute declaration
    # sql_attr_bigint       = my_bigint_id
    # UNIX timestamp attribute declaration
    # sql_attr_timestamp    = posted_ts
    # floating point attribute declaration
    # sql_attr_float        = lat_radians
    # string attribute declaration
    sql_attr_string       = c_title
    sql_attr_string       = c_content
    # JSON attribute declaration
    # sql_attr_json     = properties
    # combined field plus attribute declaration (from a single column)
    # stores column as an attribute, but also indexes it as a full-text field
    #
    # sql_field_string  = author
}
Salin selepas log masuk

然后设置数据源的索引

index d_sphinx_testdb_index
{
    #数据源名
    source = d_sphinx_testdb
    # 索引记录存放目录
    path = /usr/local/sphinx/var/data/d_sphinx_testdb_index
    # 文档信息存储方式
    docinfo = extern
    #缓存数据内存锁定
    mlock = 0
    # 形态学
    morphology = none
    # 索引的词最小长度
    min_word_len = 1
    #数据编码
    charset_type = utf-8
    #最小前缀
    min_prefix_len = 0
    #最小中缀
    min_infix_len = 1 
}
indexer  
{  
    # 内存限制
    mem_limit  = 32M  
}
searchd  
{  
    # 监听端口
    listen          = 9312  
    # 服务进程日志
    log         = /usr/local/sphinx/log/searchd.log  
    # 客户端查询日志
    query_log       = /usr/local/sphinx/log/query.log  
    # 请求超时
    read_timeout            = 5  
    # 同时可执行的最大searchd 进程数
    max_children            = 30  
    #进程ID文件
    pid_file        = /usr/local/sphinx/log/searchd.pid 
    # 查询结果的最大返回数    
    max_matches     = 1000  
    # 是否支持无缝切换,做增量索引时通常需要
    seamless_rotate         = 1  
}  
Salin selepas log masuk

创建索引

进入 bin 目录,执行

./indexer 索引名
Salin selepas log masuk

错误集

libmysqlclient.so.18

但是我报下面的错误

./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
Salin selepas log masuk

原因:这主要是因为你安装库后,没有配置相应的环境变量.可以通过连接修正这个问题

sudo ln /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18 
Salin selepas log masuk

但是还是报错,原来添加一个动态库后需要重新加载动态库。

tiankonguse:bin #  ldconfig
Salin selepas log masuk

但是我又报错了

ln: creating hard link `/usr/lib/libmysqlclient.so.18 ' => `/usr/local/mysql/lib/libmysqlclient.so.18': Invalid cross-device link
Salin selepas log masuk

于是我只好创建软连接了。

sudo  ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18 
Salin selepas log masuk

查看检索是否启动

tiankonguse:bin #  ps -ef | grep search
tiankonguse   9601     1  0 Oct28 ?        00:00:00 xs-searchd: master                                             
tiankonguse   9602  9601  0 Oct28 ?        00:00:00 xs-searchd: worker[1]                                          
tiankonguse   9603  9601  0 Oct28 ?        00:00:00 xs-searchd: worker[2]                                          
tiankonguse   9604  9601  0 Oct28 ?        00:00:00 xs-searchd: worker[3]                                          
root     32637 18048  0 21:12 pts/0    00:00:00 grep search
Salin selepas log masuk

WARNING attribute not found

执行索引的时候,看到这个错误,搜索了一下,原来主键不能加入到属性中去。

WARNING: attribute 'c_id' not found - IGNORING
Salin selepas log masuk

参考文档 数据源配置:mysql数据源 和 WARNING: zero/NULL document_id, skipping .

ERROR index No fields in schema

ERROR: index 't_cover_sphinx_index': No fields in schema - will not index
Salin selepas log masuk

还是在这里找到了原因。

使用sql_attr设置的字段,只能作为属性,使用SphinxClient::SetFilter()进行过滤;
未被设置的字段,自动作为全文检索的字段,使用SphinxClient::Query("搜索字符串")进行全文搜索

而我把所有字段都设置为 sql_attr 了,于是把需要全文索引的字段去掉。终于跑出一些接过来。

但是还有一些问题。

WARNING sql_query_info removed from Sphinx

WARNING: key 'sql_query_info' was permanently removed from Sphinx configuration. Refer to documentation for details.
Salin selepas log masuk

好吧,我说怎么没有在配置文件中看到 sql_query_info 的说明呢,原来已经删除了,那就注释掉吧。

word overrun buffer

还是搜主键搜到的原因是我的主键不是一个整数,而 sphinx 要求必须是一个整数。

WARNING: source : skipped 300 document(s) with zero/NULL ids
WARNING: word overrun buffer, clipped!!!
WARNING: 601 duplicate document id pairs found
Salin selepas log masuk
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 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 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)

Apakah yang perlu saya lakukan jika saya memuat turun kertas dinding orang lain selepas log masuk ke akaun lain pada mesin kertas dinding? Apakah yang perlu saya lakukan jika saya memuat turun kertas dinding orang lain selepas log masuk ke akaun lain pada mesin kertas dinding? Mar 19, 2024 pm 02:00 PM

Apabila anda log masuk ke akaun stim orang lain pada komputer anda, dan akaun orang lain itu kebetulan mempunyai perisian kertas dinding, stim akan memuat turun kertas dinding yang dilanggan ke akaun orang lain secara automatik selepas bertukar kembali ke akaun anda sendiri Pengguna boleh menyelesaikan masalah ini dengan mematikan penyegerakan awan wap. Apa yang perlu dilakukan jika enjin kertas dinding memuat turun kertas dinding orang lain selepas log masuk ke akaun lain 1. Log masuk ke akaun stim anda sendiri, cari penyegerakan awan dalam tetapan, dan matikan penyegerakan awan stim. 2. Log masuk ke akaun Steam orang lain yang anda log masuk sebelum ini, buka Bengkel Kreatif Kertas Dinding, cari kandungan langganan, dan kemudian batalkan semua langganan. (Sekiranya anda tidak dapat mencari kertas dinding pada masa hadapan, anda boleh mengumpulnya dahulu dan kemudian membatalkan langganan) 3. Tukar semula ke wap anda sendiri

Pengenalan kepada cara memuat turun dan memasang permainan superpeople Pengenalan kepada cara memuat turun dan memasang permainan superpeople Mar 30, 2024 pm 04:01 PM

Permainan superpeople boleh dimuat turun melalui klien wap Saiz permainan ini ialah kira-kira 28G Ia biasanya mengambil masa satu setengah jam untuk memuat turun dan memasang Berikut ialah tutorial muat turun dan pemasangan khusus untuk anda. Kaedah baharu untuk memohon ujian tertutup global 1) Cari "SUPERPEOPLE" dalam kedai Steam (muat turun klien stim) 2) Klik "Minta akses kepada ujian tertutup SUPERPEOPLE" di bahagian bawah halaman kedai "SUPERPEOPLE" 3) Selepas mengklik butang minta butang akses, Permainan "SUPERPEOPLECBT" boleh disahkan dalam perpustakaan Steam 4) Klik butang pasang dalam "SUPERPEOPLECBT" dan muat turun

Di mana untuk memuat turun fail dari Quark Network Disk_Cara memuat turun Quark Network Disk ke kawasan setempat dan berkongsi Di mana untuk memuat turun fail dari Quark Network Disk_Cara memuat turun Quark Network Disk ke kawasan setempat dan berkongsi Mar 21, 2024 pm 03:57 PM

Sebagai alat cakera rangkaian yang mudah dan praktikal, Quark boleh membantu pengguna mendapatkan sumber kegemaran mereka dengan mudah Bagaimana jika anda ingin memuat turun fail secara tempatan? Biar editor memberitahu anda sekarang, mari belajar bersama! Cara memuat turun Cakera Rangkaian Quark ke perkongsian setempat 1. Mula-mula buka perisian Quark, masukkan halaman utama dan klik [Ikon Awan] di sebelah kanan bawah 2. Kemudian pada halaman Cakera Rangkaian Quark, kami klik fungsi [Dokumen]; 3. Kemudian pergi ke halaman dokumen, pilih fail yang anda ingin muat turun, dan klik [ikon tiga titik] 4. Selepas klik terakhir, kami klik [Muat turun] dalam kotak dialog pop timbul;

Bagaimana untuk memuat turun lagu-lagu Beilehu children Bagaimana untuk memuat turun lagu-lagu Beilehu children Mar 28, 2024 am 11:10 AM

Sebagai iringan yang sangat diperlukan untuk tumbesaran kanak-kanak, lagu-lagu kanak-kanak Beilehu telah memenangi kasih sayang ibu bapa dan kanak-kanak yang tidak terkira banyaknya dengan melodi yang ceria, gambar yang jelas dan kandungan yang menghiburkan dan mendidik. Bagi membolehkan bayi menikmati kegembiraan yang dibawakan oleh lagu kanak-kanak pada bila-bila masa dan di mana sahaja, ramai ibu bapa berharap untuk memuat turun lagu kanak-kanak Beilehu ke telefon bimbit atau tablet mereka supaya mereka boleh mendengar anak-anak mereka pada bila-bila masa, tetapi bagaimana untuk menyimpan lagu kanak-kanak Beilehu. ? Pada telefon mudah alih anda, tutorial ini akan membawakan anda pengenalan terperinci. Pengguna yang belum memahaminya boleh datang dan membaca bersama artikel ini untuk mengetahui lebih lanjut. Beilehu Nursery Rhymes Muat Turun Tutorial Pelbagai Gambar Lagu Kanak-kanak: Buka perisian dan pilih lagu kanak-kanak yang anda ingin muat turun Editor mengambil "Lagu Kanak-Kanak Klasik" sebagai contoh 2. Klik butang "Muat turun" di bawah bintang lagu kanak-kanak.

Cara menggunakan NetEase Mailbox Master Cara menggunakan NetEase Mailbox Master Mar 27, 2024 pm 05:32 PM

NetEase Mailbox, sebagai alamat e-mel yang digunakan secara meluas oleh netizen Cina, sentiasa memenangi kepercayaan pengguna dengan perkhidmatannya yang stabil dan cekap. NetEase Mailbox Master ialah perisian e-mel yang dicipta khas untuk pengguna telefon mudah alih. Ia sangat memudahkan proses menghantar dan menerima e-mel dan menjadikan pemprosesan e-mel kami lebih mudah. Jadi bagaimana untuk menggunakan NetEase Mailbox Master, dan apakah fungsi khusus yang ada di bawah, editor tapak ini akan memberi anda pengenalan terperinci, dengan harapan dapat membantu anda. Mula-mula, anda boleh mencari dan memuat turun aplikasi NetEase Mailbox Master di gedung aplikasi mudah alih. Cari "Induk Peti Mel NetEase" dalam App Store atau Baidu Mobile Assistant, dan kemudian ikut gesaan untuk memasangnya. Selepas muat turun dan pemasangan selesai, kami membuka akaun e-mel NetEase dan log masuk. Antara muka log masuk adalah seperti yang ditunjukkan di bawah

Cara menggunakan aplikasi Baidu Netdisk Cara menggunakan aplikasi Baidu Netdisk Mar 27, 2024 pm 06:46 PM

Storan awan telah menjadi bahagian yang amat diperlukan dalam kehidupan dan kerja harian kita pada masa kini. Sebagai salah satu perkhidmatan storan awan terkemuka di China, Baidu Netdisk telah memenangi hati sebilangan besar pengguna dengan fungsi storan yang berkuasa, kelajuan penghantaran yang cekap dan pengalaman operasi yang mudah. Dan sama ada anda ingin menyandarkan fail penting, berkongsi maklumat, menonton video dalam talian atau mendengar muzik, Baidu Cloud Disk boleh memenuhi keperluan anda. Walau bagaimanapun, ramai pengguna mungkin tidak memahami penggunaan khusus aplikasi Baidu Netdisk, jadi tutorial ini akan memperkenalkan anda tentang cara menggunakan aplikasi Baidu Netdisk secara terperinci Jika anda masih keliru, sila ikuti artikel ini untuk mengetahui lebih lanjut! Cara menggunakan Cakera Rangkaian Awan Baidu: 1. Pemasangan Mula-mula, semasa memuat turun dan memasang perisian Baidu Cloud, sila pilih pilihan pemasangan tersuai.

Bagaimana untuk memasang apl Android pada Linux? Bagaimana untuk memasang apl Android pada Linux? Mar 19, 2024 am 11:15 AM

Memasang aplikasi Android di Linux sentiasa menjadi kebimbangan ramai pengguna Terutamanya bagi pengguna Linux yang suka menggunakan aplikasi Android, adalah sangat penting untuk menguasai cara memasang aplikasi Android pada sistem Linux. Walaupun menjalankan aplikasi Android secara langsung pada Linux tidak semudah pada platform Android, dengan menggunakan emulator atau alatan pihak ketiga, kami masih boleh menikmati aplikasi Android di Linux dengan gembira. Berikut akan memperkenalkan cara memasang aplikasi Android pada sistem Linux.

Bagaimana untuk memuat turun dan menyimpan video Douyin Bagaimana untuk memuat turun dan menyimpan video Douyin Mar 25, 2024 pm 09:46 PM

Bagaimana untuk memuat turun dan menyimpan video Douyin? Anda boleh memuat turun dan menyimpan video dalam APP video pendek Douyin Kebanyakan pengguna tidak tahu cara memuat turun dan menyimpan video Douyin Seterusnya ialah gambarajah cara memuat turun dan menyimpan video Douyin yang dibawa oleh editor . Teks tutorial, pengguna yang berminat datang dan lihat! Tutorial tentang cara menggunakan Douyin: Cara memuat turun dan menyimpan video Douyin 1. Mula-mula buka APP video pendek Douyin, masukkan halaman utama dan klik butang [Kongsi] di sebelah kanan 2. Selepas itu, bar pelbagai fungsi akan kembangkan di bawah, luncur ke kanan untuk mencari ikon [ Simpan setempat] 3. Kemudian anda perlu menunggu untuk muat turun, dan kemudian sempadan [Simpan, sila pergi ke album untuk melihat] akan muncul; halaman album, dan anda boleh melihat bahawa video yang baru anda muat turun telah disimpan.

See all articles