1

私は検索エンジンを構築していますが、多くの異なる名前に対してそれほど一意ではないIDを持っています...したがって、たとえば、「Kindle」、「Amazon Kindle」、「Amazon」のような複数の名前を持つB0051QVF7AのIDが存在する可能性があります。 Kindle3G」「Kindle電子ブックリーダー」「NewKindle」など

問題と私が持っている質問は、1100万行のDBからこのデータを入力しようとしていることです。それぞれが一度に1つずつ読み取られます。だから私は各IDのすべての名前を持っているわけではありません。毎回新しいドキュメントをリストに追加しています。

私が見つけようとしているのは、既存のドキュメントに名前を追加するにはどうすればよいですか?ドキュメントを正しく読んでいる場合、フィールドに追加情報を追加するのではなく、ドキュメント全体を上書きしているようです...ドキュメントの複数値フィールドに名前を追加したいだけです...

名前を削除すると(上記の例では、新しいKindleがリリースされたときに「新しいKindle」が削除される可能性があります)、これが奇妙で素晴らしい「問題」を引き起こす可能性があることは知っていますが、インデックスを何度も再作成することを考えています。そのような問題を解決するために(月に1回程度。現在インデックスを作成するのに約45分かかります)。

では、既存のドキュメントのsolrの複数値フィールドに値を追加するにはどうすればよいでしょうか。

4

1 に答える 1

1

@Mauricio Schefferのコメントによってリンクされた質問によると、Solrは現在、既存のドキュメントの単一フィールド値の更新をサポートしていません。ここにはいくつかのオプションがあるかもしれません...

  1. データベースからデータをプルしているプロセスで、新しい名前が見つかったら、Solrから既存のドキュメントのすべてのフィールドをプルし、新しい値を追加して、ドキュメント全体をSolrに再送信する必要があります(すでにこれを行っている可能性があります) )。
  2. データベースから読み取るコードにロジックを追加して、ドキュメントをインデックスに挿入する前に、各ドキュメントの一意の名前をすべて収集します。ただし、最大1,100万件のレコードがある場合、これを実行できないようにするリソースの制約がある可能性があります。
于 2011-10-18T17:10:53.677 に答える