作为一个备选方案,考虑一下 Sphinx,它是一种开源和免费的搜索引擎,可以非常快速
地搜索文本。例如,在一个几乎有 300,000
行及五个索引列(每列包含大约 15 个单词)
的活动数据库中,Sphinx
可以在 1/100
“
”
秒内得到 这些单词中任何一个单词 的搜索结果
(在运行 Debian Linux? Sarge
的 2-GHz AMD Opteron 处理器、1 GB RAM 的计算机上)。
Sphinx 提供了大量功能,包括:
·它可以为能够表示为字符串的所有数据建立索引。
·它可以以各种方式为相同数据建立索引。对于多个索引,每个索引都针对特定目的
而定制,您可以选择最适当的索引来优化搜索结果。
·它可以把属性与每条索引数据关联起来。然后您可以使用一个或多个属性来进一步
过滤搜索结果。
·
“
它支持词法,因此搜索单词 cats”
“
还会找到词根 cat”。
·
您可以在许多计算机中分发 Sphinx 索引,从而提供故障恢复功能。
·它可以创建任意长度的单词前缀索引和可变长度的中缀子字符串的索引。例如,一
个零件号可以是 10 个字符宽。前缀索引将匹配位于字符串开头处的所有可能的子字符串。
中缀索引将匹配在字符串内任意位置的子字符串。
·
您可以在 MySQL V5 内将其作为存储引擎运行,降低使用其他守护程序的需求(通
常被视为另一个故障点)。
您可以在 Sphinx
源代码附带的 README 文件中或通过在线资料找到完整的功能列表 。
Sphinx Web
站点还列出了已经部署了 Sphinx 的若干个项目。
Sphinx
是 用 C++
编 写 、 用 GNU
编 译 器 构 建 、 支 持 64 位 支 持 平 台 , 并 在
Linux、UNIX?、Microsoft? Windows?
和 Mac OS X
上运行。构建 Sphinx 十分简单:下载并
解压缩代码,然后运行 ./configure && make && make install 命令。
默认情况下,Sphinx
实用程序将被安装到 /usr/local/bin/
中,并且所有 Sphinx 组件的配置
文件都位于 /usr/local/etc/sphinx.conf 中。
Sphinx
有三个组件:索引生成器、搜索引擎和命令行 search 实用程序:
·索引生成器被称为索引器。它将查询数据库,为结果的每行中的每列建立索引,并且将
每个索引条目绑定到行的主键上。
·
搜索引擎是名为 searchd 的守护程序。该守护程序将接收搜索词和其他参数,快速遍历一
个或多个索引,并返回结果。如果找到匹配,searchd 将返回一个主键数组。对于这些键,
应用程序可以针对相关数据库运行查询来查找包含匹配的完整记录。 Searchd 将在端口
3312 上通过套接字连接与应用程序进行通信。
·
便捷的 search
实用程序使您可以从命令行构造搜索而无需编写代码。如果 searchd 返回匹
配,则 search 将查询数据库并显示匹配集中的行。search
实用程序对于调试 Sphinx 配置和
执行临时搜索十分有用。
此外,Sphinx
的作者 Andrew Aksyonoff
和其他贡献者为 PHP、Perl、C/C++ 和其他编程语
言提供了 API。
搜索车身零件
假定 Body-Parts.com
——
——
出售车身零件
挡泥板、铬、缓冲器等
用于珍贵且值得收藏
的汽车。正如在现实世界中,Body Parts 站点的访问者很可能按制造商(比如保时捷或制
造同类零件的第三方制造商)、零件号、产地、车型、年份、条件(二手、全新、翻新)以及描
述或者这些属性的某种组合来搜索零件。
要构建 Body Parts
搜索功能,让我们使用 MySQL V5.0
作为数据存储并使用 Sphinx search
守护程序来提供快速而精确的文本搜索。MySQL V5.0 是一个功能强大的数据库,但是它
的增强型全文本搜索功能并不特别丰富。实际上,它仅限于 MyISAM ——
表
不支持外键