我们有一个非常大的30+百万产品数据库,需要查询它们来创建搜索结果和每秒数千次的广告显示。我们一直在研究Sphinx、Solr、Lucene和Elastic作为执行这些持续大规模搜索的选项。
这是我们需要做的。获取关键字并在数据库中运行它们,以查找与之最匹配的产品。我们将使用我们自己的算法来决定哪些产品与我们的广告目标最相关,但我们知道这些引擎已经有了自己的相关性算法。
因此,我们的问题是,我们如何在引擎的基础上高效地使用我们自己的算法。是否可以将它们作为某种类型的模块添加到引擎本身?或者我们必须重写引擎的相关性代码?我认为我们可以通过执行多个查询来实现应用程序中的算法,但这确实会扼杀效率。
此外,我们还想知道哪种搜索解决方案最适合我们。现在我们倾向于Sphinx,但我们真的不确定。
此外,您是否建议在MySQL上运行这些引擎,或者在某种类型的键值存储(如Cassandra )上运行它们更好?请记住,有3000万条记录,而且随着我们的发展,这个数字可能会翻一番。
感谢您的回复!
发布于 2010-08-18 23:10:41
我不能给你一个完整的答案,因为我还没有用过所有的产品,但我可以说一些可能会有帮助的东西。
我发现修改Lucene非常容易。但正如我的第一个要点所说,如果你想使用一种算法,而不是基于某个术语对文档的重要性,我认为Lucene不是合适的选择。
发布于 2010-08-17 08:35:48
我实际上用Solr做了类似的事情。我不能对细节发表评论,但基本上专有的分析/相关性步骤生成了一系列带有相关boosts的搜索词,并将它们提供给Solr。我认为任何搜索引擎都可以做到这一点(它们都支持某种增强功能)。
归根结底,这取决于您的特定分析需要什么。
https://stackoverflow.com/questions/3498046
复制相似问题