更改产品数据时更新Solr Index

时间:2012-06-12 12:04:51

标签: performance solr lucene solrnet

我们正在努力在电子商务网站上实施Solr。通过现有产品信息中的更新或完全添加新产品,网站将不断更新新数据。

我们在使用solrnet的asp.net mvc3应用程序中使用它。

我们正面临索引问题。我们目前正在使用以下内容进行提交:

private static ISolrOperations<ProductSolr> solrWorker;
         public void ProductIndex()
         {
             //Check connection instance invoked or not
             if (solrWorker == null)
             {
                  Startup.Init<ProductSolr>("http://localhost:8983/solr/");
                  solrWorker = ServiceLocator.Current.GetInstance<ISolrOperations<ProductSolr>>();

             }
             var products = GetProductIdandName();
             solrWorker.Add(products);
             solrWorker.Commit();

         }

虽然这只是一个简单的测试应用程序,我们只将产品名称和id插入到solr索引中。每次运行时,新产品都会立即更新,并在我们搜索时可用。我认为每次运行时都会在solr中创建新的数据索引?如果我错了,请纠正我。

我的问题是:

  1. 这会重新整理Solr索引数据吗?或者只更新已更改/新的数据?怎么样?即使它只更新已更改/新数据,它如何知道更改了哪些数据?对于大型数据集,这必定存在一些问题。
  2. 跟踪自上次提交以来发生了哪些变化的替代方法是什么,有没有办法将这些产品添加到已更改的Solr索引中。
  3. 当我们将现有记录更新为solr时会发生什么?它是否删除旧数据并插入新数据并重新创建整个索引?资源密集吗?
  4. 电子商务零售商如何与数百万产品合作。
  5. 解决此问题的最佳策略是什么?

1 个答案:

答案 0 :(得分:4)

  1. 当您仅更新该记录时,将删除并插入该记录。 Solr不会更新记录。其他记录没有动过。提交数据时,将使用此新数据创建新段。在优化时,数据被优化为单个段。

  2. 您可以使用增量构建技术在上次构建后添加/更新记录。 DIH提供它out of the box,如果您通过作业手动处理它,您可以维护时间戳并运行构建。

  3. Solr没有更新操作。它将执行删除和添加。因此,您必须再次使用完整数据,而不仅仅是更新的字段。它不是资源密集型的。通常只有提交和优化。

  4. Solr可以处理任何数量的数据。如果您的数据超出单台机器的处理能力,则可以使用Sharding。

相关问题