第 1 即将指向 sphinx.conf 文件中的指定命据源。第 2 即将界说存储索引数据的地位;依照商定,Sphinx 索引将被存储到 /var/data/sphinx 中。第 3 即将答应索引利用英文词法。而且第 5 行至第 7 即将告知索引器只索引含有三个字符或更多字符的那些单词,而且为每一个如许的字符的子字符串创立中缀索引(为了便于援用,清单 9 显示了 Body Parts 的完全示例 sphinx.conf 文件)。
清单 9. Body Parts 的示例 sphinx.conf
以下为援用的内容:
source catalog
{
type = mysql
sql_host = localhost
sql_user = reaper
sql_pass = s3cr3t
sql_db = body_parts
sql_sock = /var/run/mysqld/mysqld.sock
sql_port = 3306
# indexer query
# document_id MUST be the very first field
# document_id MUST be positive (non-zero, non-negative)
# document_id MUST fit into 32 bits
# document_id MUST be unique
sql_query = \
SELECT \
id, partno, description, \
assembly, model \
FROM \
Catalog;
sql_group_column = assembly
sql_group_column = model
# document info query
# ONLY used by search utility to display document information
# MUST be able to fetch document info by its id, therefore
# MUST contain '$id' macro
#
sql_query_info = SELECT * FROM Inventory WHERE id=$id
}
index catalog
{
source = catalog
path = /var/data/sphinx/catalog
morphology = stem_en
min_word_len = 3
min_prefix_len = 0
min_infix_len = 3
}
searchd
{
port = 3312
log = /var/log/searchd/searchd.log
query_log = /var/log/searchd/query.log
pid_file = /var/log/searchd/searchd.pid
}
底部的 searchd 局部将设置装备摆设 searchd 守护法式自己。该局部中的条目不言自明。query.log 尤其有效:它将在运转时显示每次搜刮并显示了局,例如搜刮的文档数和婚配总数。 构建和测试索引
您如今已筹办好为 Body Parts 使用法式构建索引。为此,需求履行以下步调:
键入 $ sudo mkdir -p /var/data/sphinx 创立目次布局 /var/data/sphinx
假定 MySQL 正在运转,利用以下所示的代码运转索引器来创立索引。
清单 10. 创立索引
以下为援用的内容:
$ sudo /usr/local/bin/indexer --config /usr/local/etc/sphinx.conf --all
Sphinx 0.9.7
Copyright (c) 2001-2007, Andrew Aksyonoff
using config file '/usr/local/etc/sphinx.conf'...
indexing index 'catalog'...
collected 8 docs, 0.0 MB
sorted 0.0 Mhits, 82.8% done
total 8 docs, 149 bytes
total 0.010 sec, 14900.00 bytes/sec, 800.00 docs/sec
注:-all 参数将重构 sphinx.conf 中列出的一切索引。假如不需求重构一切索引,您可使用其他参数只对局部索引停止重构。
您如今可使用以下所示的代码用 search 适用法式测试索引(不用运转 searchd 便可利用 search)。
清单 11. 用 search 测试索引
以下为援用的内容:
$ /usr/local/bin/search --config /usr/local/etc/sphinx.conf ENG
Sphinx 0.9.7
Copyright (c) 2001-2007, Andrew Aksyonoff
index 'catalog': query 'ENG ': returned 2 matches of 2 total in 0.000 sec
displaying matches:
1. document=8, weight=1, assembly=5, model=7
id=8
partno=ENG088
description=Cylinder head
price=55
2. document=9, weight=1, assembly=5, model=3
id=9
partno=ENG976
description=Large cylinder head
price=65
words:
1. 'eng': 2 documents, 2 hits
$ /usr/local/bin/search --config /usr/local/etc/sphinx.conf wind
Sphinx 0.9.7
Copyright (c) 2001-2007, Andrew Aksyonoff
index 'catalog': query 'wind ': returned 2 matches of 2 total in 0.000 sec
displaying matches:
1. document=1, weight=1, assembly=3, model=1
id=1
partno=WIN408
description=Portal window
price=423
2. document=5, weight=1, assembly=3, model=1
id=5
partno=WIN958
description=Windshield, front
price=500
words:
1. 'wind': 2 documents, 2 hits
$ /usr/local/bin/search \
--config /usr/local/etc/sphinx.conf --filter model 3 ENG
Sphinx 0.9.7
Copyright (c) 2001-2007, Andrew Aksyonoff
index 'catalog': query 'ENG ': returned 1 matches of 1 total in 0.000 sec
displaying matches:
1. document=9, weight=1, assembly=5, model=3
id=9
partno=ENG976
description=Large cylinder head
price=65
words:
1. 'eng': 2 documents, 2 hits