我有这个分类广告网站,我现在一直在寻找实现分类广告搜索功能的方法.
我想知道,是否有任何教程可以用PHP创建一个非常强大的搜索引擎?
我已经调查了第三方搜索引擎,感觉它们太多了......
PS:我的服务器上没有全文支持.
谢谢
说实话,我建议使用Zend_Lucene,因为虽然它起初看起来很混乱,但是一旦你掌握它就很简单.虽然索引很慢,但搜索速度非常快.
如果你想编写一个快速而强大的搜索引擎,你不会在教程中找到一个实现,你最好做一些研究和阅读有关这个主题的论文.换句话说,如果没有大量的研究和努力,你将无法用PHP编写任何东西来与Zend Lucene竞争.
这些文件非常好,我已经设法在一个基于无架构的项目中实现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);
Run Code Online (Sandbox Code Playgroud)
要找到车:
$index = Zend_Search_Lucene::open('/data/my-index');
$result = $index->find('Car:MyCar');
foreach ( $result as $hit ){
echo $hit->Make;
}
Run Code Online (Sandbox Code Playgroud)
缺点是Zend_Lucene不是存储引擎,它不对存储做任何保证,因此虽然您可以使用它来存储记录,但使用适当的数据库将是更好的选择.这是我遇到的问题之一,您只需要保持搜索索引和数据库同步.我发现的最好的方法就是创建一个在数据库和索引上调用add/remove的包装类.