0

我的任务是在电子商务网站上建立搜索服务。目前,它在 sql server 上使用全文索引,这并不理想,因为它很慢,而且不是那么灵活。

您如何建议我将其更改为 lucene?我的意思是,我最初将如何将所有数据加载到索引中,以及如何维护它?在我的“插入产品”方法中,我是否也将其插入索引中?

任何信息都有很大帮助!

4

2 回答 2

3

我目前正在使用基于 Lucene 构建的 Solr 作为我的一个电子商务项目的搜索引擎。它工作得很好。

http://lucene.apache.org/solr/

此外,就在 DB 和 Solr 之间保持产品同步而言,您可以构建自己的“清扫器”或在 Solr 中实现 DataImportHandler。

http://wiki.apache.org/solr/DataImportHandler

我们构建了自己的清扫器,它会每隔一段时间读取数据库视图并检查是否有新产品或任何产品数据已更新。这是一种蛮力方法,我希望我以前知道 DataImportHandler 。

Facets 也是 Solr 的一个非常强大的部分。我强烈推荐使用它们。

于 2009-07-30T22:53:50.267 回答
2

如果您决定使用 Lucene.NET 进行搜索,则需要执行以下操作:

  • 通过遍历所有记录并将要搜索的数据写入索引来创建初始索引
  • 如果您写入索引的记录和数据量导致索引很大,那么请考虑将它们填充到多个索引中(这意味着您必须制作更复杂的搜索程序,因为您需要搜索每个索引然后合并结果!!)
  • 当产品更新或创建时,您需要更新索引(这里有一个过程来创建额外的索引部分,然后合并索引)
  • 如果您有一个高流量站点并且有可能在同一时刻发生多个搜索,那么您需要创建一个包装器,可以跨多个重复索引(或索引集)为您进行搜索(在这里考虑单例模式) 因为索引一次只能访问(打开)一个搜索

这是一个很棒的平台。我们最初尝试使用自由文本搜索,发现创建索引、更新和管理索引很麻烦。搜索并不比标准 sql 搜索快多少。他们确实在搜索查询中提供了一些灵活性......但即使这与 Lucene 的强大功能相比也相形见绌!

于 2009-07-30T23:07:54.950 回答