在asp.net电子商务网站中实施Lucene搜索的最佳实践

时间:2009-07-30 22:36:45

标签: c# asp.net lucene e-commerce lucene.net

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

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

任何信息都有很大的帮助!

2 个答案:

答案 0 :(得分:3)

我目前正在使用构建在Lucene之上的Solr作为我的一个电子商务项目的搜索引擎。它很棒。

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

另外,为了使产品在DB和Solr之间保持同步,您可以构建自己的“清扫工”或在Solr中实现DataImportHandler。

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

我们构建自己的清扫工具,以某个间隔读取数据库视图,并检查是否有新产品或任何产品数据已更新。这是一种强力方法,我希望我之前了解DataImportHandler。

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

答案 1 :(得分:2)

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

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

这是一个很棒的平台。我们最初尝试使用自由文本搜索,发现创建索引,更新和管理是一件痛苦的事。搜索速度并不比标准的sql搜索快得多。他们确实在搜索查询中提供了一些灵活性......但即使这与Lucene的力量相比也显得格格不入!