首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sphinx/Solr/Lucene/弹性相关性

Sphinx/Solr/Lucene/弹性相关性
EN

Stack Overflow用户
提问于 2010-08-17 06:52:11
回答 2查看 1.2K关注 0票数 1

我们有一个非常大的30+百万产品数据库,需要查询它们来创建搜索结果和每秒数千次的广告显示。我们一直在研究Sphinx、Solr、Lucene和Elastic作为执行这些持续大规模搜索的选项。

这是我们需要做的。获取关键字并在数据库中运行它们,以查找与之最匹配的产品。我们将使用我们自己的算法来决定哪些产品与我们的广告目标最相关,但我们知道这些引擎已经有了自己的相关性算法。

因此,我们的问题是,我们如何在引擎的基础上高效地使用我们自己的算法。是否可以将它们作为某种类型的模块添加到引擎本身?或者我们必须重写引擎的相关性代码?我认为我们可以通过执行多个查询来实现应用程序中的算法,但这确实会扼杀效率。

此外,我们还想知道哪种搜索解决方案最适合我们。现在我们倾向于Sphinx,但我们真的不确定。

此外,您是否建议在MySQL上运行这些引擎,或者在某种类型的键值存储(如Cassandra )上运行它们更好?请记住,有3000万条记录,而且随着我们的发展,这个数字可能会翻一番。

感谢您的回复!

EN

回答 2

Stack Overflow用户

发布于 2010-08-18 23:10:41

我不能给你一个完整的答案,因为我还没有用过所有的产品,但我可以说一些可能会有帮助的东西。

  1. Lucene/Solr使用向量空间模型。我不确定你所说的“自己的”算法是什么意思,但是如果它离tf/idf的概念太远(比如说,使用神经网络),你将很难将它适应lucene。如果你自己的算法只是意味着你想要比其他词更重地加权某些词,那就很好。基本上,lucene存储有关术语对文档的重要性的信息。如果你想重新定义一个术语的重要性的计算,这很容易做到。如果您想摆脱术语对文档重要性的整个概念,这将是一件痛苦的事情。
  2. Lucene(以及结果Solr)以其自定义格式存储内容。您不需要使用数据库。3000万条记录并不是一个非常大的lucene索引(当然,这取决于每条记录的大小)。如果您确实想使用db,请使用hadoop。
  3. 一般情况下,你会希望使用Solr而不是Lucene。

我发现修改Lucene非常容易。但正如我的第一个要点所说,如果你想使用一种算法,而不是基于某个术语对文档的重要性,我认为Lucene不是合适的选择。

票数 3
EN

Stack Overflow用户

发布于 2010-08-17 08:35:48

我实际上用Solr做了类似的事情。我不能对细节发表评论,但基本上专有的分析/相关性步骤生成了一系列带有相关boosts的搜索词,并将它们提供给Solr。我认为任何搜索引擎都可以做到这一点(它们都支持某种增强功能)。

归根结底,这取决于您的特定分析需要什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3498046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档