php - 我应该怎么做,自己创建一个搜索引擎还是使用另一个?

标签 php sql mysql html

我有这个分类网站,现在我一直在寻找实现分类搜索功能的方法。

我想知道,是否有任何您知道的用 PHP 创建非常强大的搜索引擎的教程?

看了第三方搜索引擎,感觉太多了...

PS:我的服务器不支持全文。

谢谢

最佳答案

老实说,我建议使用 Zend_Lucene , 虽然一开始看起来很困惑,但一旦你掌握了它,它就非常容易使用。虽然索引很慢,但搜索速度非常快。

如果你想编写一个快速而强大的搜索引擎,你不会在教程中找到实现,你最好做一些研究并阅读有关该主题的论文。换句话说,如果不进行大量研究和努力工作,您将无法用 PHP 编写任何东西来与 Zend Lucene 竞争。

文档非常非常好,我已经在一个没有基于 zend 框架的项目中实现了 Zend Lucene。它只需要花半小时阅读和消化文档,再花半小时编写一组快速测试来检查您的假设是否正确。

要创建一个带有汽车 ID 的文档并制作:

//if it hasn't been created, you need to use ::create rather than ::open
$index = Zend_Search_Lucene::open('/data/my-index');

$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::Text('Car', 'MyCar'));
$doc->addField(Zend_Search_Lucene_Field::Text('Make', 'BMW'));

$index->addDocument($doc);

寻找汽车的方法:

$index = Zend_Search_Lucene::open('/data/my-index');
$result = $index->find('Car:MyCar');

foreach ( $result as $hit ){
    echo $hit->Make;
}

缺点是Zend_Lucene不是存储引擎,它不对存储做任何保证,所以虽然你可以用它来存储记录,但使用合适的数据库会是更好的选择。这是我遇到的问题之一,你只需要保持搜索索引和数据库同步。我发现最好的方法就是创建一个包装类,在数据库和索引上调用添加/删除。

关于php - 我应该怎么做,自己创建一个搜索引擎还是使用另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1933035/

相关文章:

sql - 向postgresql中的列添加递增值

sql - 选择 WHERE 日期 = 天

mysql - facebook游戏一般使用什么技术?

javascript - 输入文件(图像)显示空数组,我应该在数组中包含数据吗?

php - yii2 - 如何使用条件逻辑使复选框可见

php - MySQL - 计算天前

php - 基于类别的时事通讯电子邮件? Magento CE 1/6/2

sql - 从 SQL 语句中删除注释的正则表达式

mysql - 当后端升级到 MySQL 时,连接中带有 varchar 字段的可编辑 MS Access 查询不再可编辑

mysql - SQL 按姓名搜索