我们正在努力在电子商务网站上实施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中创建新的数据索引?如果我错了,请纠正我。
我的问题是:
解决此问题的最佳策略是什么?
答案 0 :(得分:4)
当您仅更新该记录时,将删除并插入该记录。 Solr不会更新记录。其他记录没有动过。提交数据时,将使用此新数据创建新段。在优化时,数据被优化为单个段。
您可以使用增量构建技术在上次构建后添加/更新记录。 DIH提供它out of the box,如果您通过作业手动处理它,您可以维护时间戳并运行构建。
Solr没有更新操作。它将执行删除和添加。因此,您必须再次使用完整数据,而不仅仅是更新的字段。它不是资源密集型的。通常只有提交和优化。
Solr可以处理任何数量的数据。如果您的数据超出单台机器的处理能力,则可以使用Sharding。