我有这个分类网站,现在我一直在寻找实现分类搜索功能的方法。
我想知道,是否有任何您知道的用 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/