私たちはeコマースサイトでのSolrの実装に取り組んでいます。サイトは、既存の製品情報を更新するか、新しい製品を完全に追加することにより、新しいデータで継続的に更新されます。
solrnetを使用してasp.netmvc3アプリケーションで使用しています。
インデックス作成の問題に直面しています。現在、以下を使用してコミットを行っています。
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に新しいデータインデックスが作成されると思いますか?私が間違っている場合は私を訂正してください。
私の質問は:
- これにより、Solrインデックスデータ全体が再作成されますか?または、変更/新規のデータを更新するだけですか?どのように?変更された/新しいデータのみを更新する場合でも、どのデータが変更されたかをどのように知るのでしょうか。大規模なデータセットでは、これにはいくつかの問題が必要です。
- 前回のコミット以降に変更されたものを追跡する別の方法は何ですか。また、変更されたSolrインデックスにそれらの製品を追加する方法はありますか。
- 既存のレコードをsolrに更新するとどうなりますか?古いデータを削除して新しいデータを挿入し、インデックス全体を再作成しますか?このリソースは集中的ですか?
- 何百万もの製品を使ってこれを行うeコマース小売業者の規模。
この問題を解決するための最良の戦略は何ですか?