【问题标题】:What should I do, create a search engine myself or use another one?我应该怎么做,自己创建一个搜索引擎还是使用另一个?
【发布时间】:2009-12-19 14:26:12
【问题描述】:

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

我想知道,有没有你知道的用 PHP 创建一个非常强大的搜索引擎的教程?

我研究过第三方搜索引擎,感觉他们太多了......

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

谢谢

【问题讨论】:

  • 我想在您之前的问题中问过这个问题,您所说的“服务器上的全文支持”到底是什么意思?这是否适用于 mySQL FULLTEXT 字段?
  • 你在兜圈子,不是吗?这是六个小时内关于同一主题的第四个问题。 stackoverflow.com/questions/1896283/…
  • 哈哈,是的,我在兜圈子,因为我没有得到我想要的答案...我的意思是 mysql 字段上的 FULLTEXT 索引是的 pekka...
  • 哇 Lucene 今天有很多动作,这是我看到用 Lucene 回答的第四个问题

标签: php sql mysql html


【解决方案1】:

说实话,我会推荐使用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 不是一个存储引擎,它不对存储做任何保证,所以虽然你可以用它来存储记录,但使用合适的数据库会是更好的选择。这是我遇到的问题之一,您只需要保持搜索索引和数据库同步即可。我发现最好的方法就是在数据库和索引上创建一个调用 add/remove 的包装类。

【讨论】:

    【解决方案2】:

    一种典型的开源思维方式是重用现有的任何东西。

    • 节省时间
    • 您可能了解其他人可能更了解的新技术
    • 通过自己的贡献、错误修复、增强功能回馈

    当然,这仅适用于满足您需求的项目。如果您认为可用的东西对您的网站来说太多了,那就自己写吧,您也会学到新的东西...

    【讨论】:

      【解决方案3】:

      鉴于您已经研究过 Sphinx 和 Lucene 并觉得它们太复杂/太大而无法实现,为什么不 interface with one of the existing Search Engines。你可能也对这篇解释为什么writing a search engine is hard的文章感兴趣

      【讨论】:

        【解决方案4】:

        你应该看看 Lucene,Zend 做了一个很好的库;

        Zend_Search_Lucene

        【讨论】:

          【解决方案5】:

          卡姆兰

          我使用非常强大的第三方搜索引擎。它有点贵,但非常强大。

          看看这里:

          dtSearch

          【讨论】:

            【解决方案6】:

            如果性能比内存/存储更重要,那么我推荐Xapian。在巨大的大型数据库(以 GB 为单位)的情况下,它的性能令人印象深刻。在每个社交书签网站delicious.com 和荷兰最大的PC 相关论坛Gathering of Tweakers 都使用它,我接近了搜索引擎的选择、开发和集成。它大大优于其他搜索引擎。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2010-12-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-08-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多