Sease[1]与AlessandroBenedetti(ApacheLucene/SolrPMC成员和提交者)和EliaPorciani(Sease研发软件工程师)共同为开源社区贡献了ApacheSolr中神经搜索的第一个里程碑。它依赖于ApacheLucene实现[2]进行K-最近邻搜索。特别感谢ChristinePoerschke、CassandraTargett、MichaelGibney和所有其他在贡献的最后阶段提供了很大帮助的审稿人。即使是一条评论也受到了高度赞赏,如果我们取得进展,总是要感谢社区。让我们从简短的介绍开始,介绍神经方法如何改进搜索。我们可以将搜索概括为四个主要领域:
几个月前,我致力于提高“完整”索引器的性能。我觉得这种改进足以分享这个故事。完整索引器是Box从头开始创建搜索索引的过程,从hbase表中读取我们所有的文档并将文档插入到Solr索引中。我们根据id对索引文档进行分片,同样的文档id也被用作hbase表中的key。我们的Solr分片公式是id%number_of_shards。mapreduce作业扫描hbase表,通过上述分片公式计算每个文件的目标分片,并将每个文档插入相应的solr分片中。这是在过去几年中为我们提供良好服务的初始模型的示意图:所有mapreduce作业都与所有分片对话,因为每个分片的数据分布在所有hbase区域中。该作业是仅
我正在尝试决定如何拆分我的逻辑。我将我的主要业务逻辑放在Node.js/Express中,并且我一直在为我的数据库使用Mongo。这很好用,但现在我需要实现一个非常强大的搜索系统,因为搜索是我网站最重要的功能之一。起初我对Mongo和Couch缺乏支持和集成感到非常惊讶,但后来我意识到我正在尝试让数据库做一些它不适合做的事情。现在我正在考虑使用Solr或ElasticSearch,但它开始似乎能够执行Mongo可以执行的部分或大部分查询,只要我正确地索引我的文档(并且根据它们的性质,我将索引每个文档的几乎每个属性)。所以说,我在想也许我应该只使用一些非常简单的东西,比如Redis,而依
我正在尝试决定如何拆分我的逻辑。我将我的主要业务逻辑放在Node.js/Express中,并且我一直在为我的数据库使用Mongo。这很好用,但现在我需要实现一个非常强大的搜索系统,因为搜索是我网站最重要的功能之一。起初我对Mongo和Couch缺乏支持和集成感到非常惊讶,但后来我意识到我正在尝试让数据库做一些它不适合做的事情。现在我正在考虑使用Solr或ElasticSearch,但它开始似乎能够执行Mongo可以执行的部分或大部分查询,只要我正确地索引我的文档(并且根据它们的性质,我将索引每个文档的几乎每个属性)。所以说,我在想也许我应该只使用一些非常简单的东西,比如Redis,而依
我正在尝试为包含大型数据集的项目找到最高效的解决方案。我想用分面过滤数据集。我在云端运行,所以我会使用RedisToGo或Websolr。Sunspot内置了刻面,我很想单独使用它。然而,我关注的是性能,我想知道是否为分面属性设置格式正确的Redis可以提高性能。这两种解决方案如何比较性能? 最佳答案 您说您关注“性能”——也许您可以阐明这对您到底意味着什么?在不深入了解您的用户故事的情况下,我会说从性能的角度来看,Redis和Solr都是完成这项工作的完全合适的工具。对于初学者来说,如果您想将分面与全文关键字搜索相结合,那么Sol
我正在尝试为包含大型数据集的项目找到最高效的解决方案。我想用分面过滤数据集。我在云端运行,所以我会使用RedisToGo或Websolr。Sunspot内置了刻面,我很想单独使用它。然而,我关注的是性能,我想知道是否为分面属性设置格式正确的Redis可以提高性能。这两种解决方案如何比较性能? 最佳答案 您说您关注“性能”——也许您可以阐明这对您到底意味着什么?在不深入了解您的用户故事的情况下,我会说从性能的角度来看,Redis和Solr都是完成这项工作的完全合适的工具。对于初学者来说,如果您想将分面与全文关键字搜索相结合,那么Sol
我有一个包含大约1+百万条记录的应用程序。我计划使用Solr来处理所有搜索。我还有一个自动完成功能。我知道Redis的自动完成速度非常快,但是Solr也有自己的autocomplete功能。问题:我应该使用Solr作为主要搜索引擎(用于非自动完成任务)并使用单独的Redis进行自动完成,还是我最好只使用Solr完成两个任务?注意事项:负载平衡也是一个问题。顺便使用Rails。谢谢。 最佳答案 我认为您只是想让Redis变得不必要地复杂化(我通常是Redis的忠实粉丝)。正如您已经提到的,Solr有自己的自动完成功能。我不会说100万
我有一个包含大约1+百万条记录的应用程序。我计划使用Solr来处理所有搜索。我还有一个自动完成功能。我知道Redis的自动完成速度非常快,但是Solr也有自己的autocomplete功能。问题:我应该使用Solr作为主要搜索引擎(用于非自动完成任务)并使用单独的Redis进行自动完成,还是我最好只使用Solr完成两个任务?注意事项:负载平衡也是一个问题。顺便使用Rails。谢谢。 最佳答案 我认为您只是想让Redis变得不必要地复杂化(我通常是Redis的忠实粉丝)。正如您已经提到的,Solr有自己的自动完成功能。我不会说100万
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭5年前。Improvethisquestion我正在编写一个将频繁访问SOLR服务器的网络应用程序。我计划创建这个SOLR服务器的多个实例,这样一个特定的服务器就不会受到太多的攻击。负载平衡的最佳方法是什么?我正在考虑创建一个Redis存储来存储每个SOLR服务器的当前请求数,并查询该存储以获取当前请求数量最少的SOLR服务器。当然,每次请求完成时我都会更新这个商店。这是最好的方法吗?在这种情况下你会怎么做?
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭5年前。Improvethisquestion我正在编写一个将频繁访问SOLR服务器的网络应用程序。我计划创建这个SOLR服务器的多个实例,这样一个特定的服务器就不会受到太多的攻击。负载平衡的最佳方法是什么?我正在考虑创建一个Redis存储来存储每个SOLR服务器的当前请求数,并查询该存储以获取当前请求数量最少的SOLR服务器。当然,每次请求完成时我都会更新这个商店。这是最好的方法吗?在这种情况下你会怎么做?