我们正在努力在电子商务网站上实施 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();
}
虽然这只是一个简单的测试应用程序,我们在 solr 索引中只插入了产品名称和 id。每次运行时,新产品都会立即更新,并在我们搜索时可用。我认为这在每次运行时都会在 solr 中创建新的数据索引?如我错了请纠正我。
我的问题是:
- 这会完全重新创建 Solr 索引数据吗?或者只是更新更改/新的数据?如何?即使它只更新更改/新数据,它如何知道哪些数据已更改?对于大型数据集,这肯定存在一些问题。
- 跟踪自上次提交以来发生的变化的替代方法是什么,有什么方法可以将这些产品添加到已更改的 Solr 索引中。
- 当我们将现有记录更新到 solr 时会发生什么?它会删除旧数据并插入新数据并重新创建整个索引吗?这是资源密集型的吗?
- 大型电子商务零售商如何使用数百万种产品做到这一点。
解决这个问题的最佳策略是什么?