我们拥有一个包含超过300万种产品的超大型数据库,需要查询它们以创建搜索结果,并且广告每秒显示数千次。我们一直在研究Sphinx,Solr,Lucene和Elastic作为执行这些持续大规模搜索的选项。
这是我们需要做的。获取关键字并在数据库中运行它们以查找与最接近的产品匹配的产品。我们将使用我们的OWN算法来确定哪些产品与我们的广告目标最相关,但我们知道这些引擎已经拥有自己的相关性算法。
所以,我们的问题是如何有效地在引擎之上使用我们自己的算法。是否可以将它们作为某种模块添加到引擎本身?或者我们是否必须重写引擎的相关性代码?我想我们可以通过执行多个查询从应用程序实现算法,但这实际上会破坏效率。
此外,我们想知道哪种搜索解决方案最适合我们。现在我们倾向于狮身人面像,但我们真的不确定。
另外,你会建议在MySQL上运行这些引擎吗,还是最好在像Cassandra这样的键值存储上运行它们?请记住,有3000万条记录,并且在我们移动时可能会翻倍。
感谢您的回复!
答案 0 :(得分:3)
我不能给你一个完整的答案,因为我没有使用过所有的产品,但我可以说一些可能有用的东西。
我发现修改Lucene非常容易。但正如我的第一个要点所说,如果你想使用的算法并非基于某个术语对文档重要性的概念,我认为Lucene不会成为可行的方法。
答案 1 :(得分:1)
我实际上和Solr做了类似的事情。我不能评论细节,但基本上专有的分析/相关性步骤产生了一系列搜索术语和相关的提升,并将它们提供给Solr。我认为这可以通过任何搜索引擎完成(它们都支持某种提升)。
最终归结为您的特定分析需要的内容。