Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 用于不断更新索引的Solr_Search_Solr_Full Text Search_Morelikethis - Fatal编程技术网

Search 用于不断更新索引的Solr

Search 用于不断更新索引的Solr,search,solr,full-text-search,morelikethis,Search,Solr,Full Text Search,Morelikethis,我有一个新闻网站,有150000篇新闻文章。每天大约有250篇新文章以5-15分钟的间隔添加到数据库中。我知道Solr针对数百万条记录进行了优化,我的150K不会成为问题。但是我担心频繁的更新会成为一个问题,因为每次更新缓存都会失效。在我的开发服务器中,冷加载一个页面需要5-7秒的时间(因为每个页面都运行一些MLT查询) 如果我把我的索引分为两个,一个是存档索引,一个是最新索引,这会有帮助吗。存档索引将每天更新一次 有人能提出任何方法来优化我的安装,以不断更新索引吗 谢谢我的答案是:测试一下!如

我有一个新闻网站,有150000篇新闻文章。每天大约有250篇新文章以5-15分钟的间隔添加到数据库中。我知道Solr针对数百万条记录进行了优化,我的150K不会成为问题。但是我担心频繁的更新会成为一个问题,因为每次更新缓存都会失效。在我的开发服务器中,冷加载一个页面需要5-7秒的时间(因为每个页面都运行一些MLT查询)

如果我把我的索引分为两个,一个是存档索引,一个是最新索引,这会有帮助吗。存档索引将每天更新一次

有人能提出任何方法来优化我的安装,以不断更新索引吗


谢谢

我的答案是:测试一下!如果您不知道它的性能如何,请不要尝试进行优化。正如您所说,150K不是很多,为您的测试构建这样大小的索引应该很快。之后,从不同的并发线程(模拟用户)运行两个MLT查询,同时为更多文档编制索引以查看其行为


您应该注意的一个设置是自动提交。由于您一直在编制索引,因此无法提交每个文档(您将导致Solr下降)。您将为此设置选择的值将允许您在保持系统响应的同时调整系统的延迟(新文档返回结果所需的时间)。

我的答案是:测试它!如果您不知道它的性能如何,请不要尝试进行优化。正如您所说,150K不是很多,为您的测试构建这样大小的索引应该很快。之后,从不同的并发线程(模拟用户)运行两个MLT查询,同时为更多文档编制索引以查看其行为


您应该注意的一个设置是自动提交。由于您一直在编制索引,因此无法提交每个文档(您将导致Solr下降)。您将为此设置选择的值将允许您调整系统的延迟(新文档在结果中返回所需的时间),同时保持系统的响应性。

考虑在主查询中使用mlt=true,而不是按结果发出更像此查询的查询。您将保存往返,因此速度会更快。

考虑在主查询中使用mlt=true,而不是像此查询那样按结果发出。您将保存往返,因此速度会更快。

能否指定“少量MLT查询”的数量?您每页总共运行多少个Solr查询?您使用的是什么客户端平台?我的本地开发服务器是Mac。生产服务器是CentOS。一个节索引页包含20篇文章,每篇文章都有一个MLT查询。而一个文章页面包含两个MLT查询。您能指定多少是“少数MLT查询”吗?您每页总共运行多少个Solr查询?您使用的是什么客户端平台?我的本地开发服务器是Mac。生产服务器是CentOS。一个节索引页包含20篇文章,每篇文章都有一个MLT查询。而一个文章页面包含两个MLT查询,我喜欢调整提交间隔的想法。您应该能够一直添加文档,并定期提交。然后,每个间隔只需支付一次重新缓存的费用。我喜欢调整提交间隔的想法。您应该能够一直添加文档,并定期提交。然后,每个间隔只需支付一次重新缓存。