2009-07-30 17 views
0

私は電子商取引サイトで検索サービスを提供することを任されています。 現在、SQL Serverでフルテキストインデックスを使用していますが、これは理想的ではありません。遅くて柔軟性のあるものではないためです。asp.net電子商取引サイトでLucene検索を実装するためのベストプラクティス

私はこれをluceneに変更するアプローチを提案しますか? これは、最初はすべてのデータをインデックスにどのようにロードするのですか?それはどのように維持されますか?私の "insert product"メソッドでは、インデックスに挿入することもできますか?

いずれの情報も大きな助けになります!

答えて

3

私は現在、私の電子商取引プロジェクトの検索エンジンとして、Luceneの上に構築されたSolrを使用しています。それは素晴らしい作品です。また

http://lucene.apache.org/solr/

限りDBとSolrの間で同期して製品を保つように、あなた自身の「スイーパー」を構築したり、Solrの中DataImportHandlerを実装することができます。

http://wiki.apache.org/solr/DataImportHandler

私たちはそこに新製品があるか、いずれかの製品データが更新されているかどうかを確認するために、いくつかの間隔をチェックでDBのビューを読み込んで私たち自身の掃除を構築します。それはブルートフォースの方法であり、前にDataImportHandlerについて知っていればいいと思います。

ファセットは、Solrの本当に強力な部分です。私はそれらを使うことを強くお勧めします。

2

あなたは次のいくつかの実行する必要があり、検索のためのLucene.NETを使用することを決定しない場合:

  • は、すべてのあなたの記録 を反復処理し、必要なデータを書き込む ことで、あなたの最初のインデックスを作成します インデックスに検索された
  • インデックスに書き込んだレコードとデータの量が大きいインデックスの場合は、複数のインデックスに詰め込むことを検討します(これは、必要なときより複雑な検索プログラムを作成する必要があることを意味します)。各インデックスを検索してから結果をマージしてください!!)
  • 製品が更新または作成されたときにインデックスを更新する必要があります(追加のインデックスパーツを作成してからインデックスをマージするプロセスがあります)
  • トラフィックが多いサイトがあり、あなたが複数の重複インデックス(またはインデックスセット)(ここではシングルトンパターンと考える)の検索を行うラッパーを作成する必要があります。インデックスは1回の検索でしかアクセスできません時間

これは素晴らしいプラットフォームです。最初はフリーテキスト検索を使用しようとしましたが、索引の作成、更新、および管理には苦労していました。検索は、標準のSQL検索よりもはるかに高速ではありませんでした。彼らは検索クエリにいくつかの柔軟性を提供しました...でも、これはLuceneの力と比較してわかりません!

関連する問題