奇妙な問題 -- cursorMarkを使って結果を取得すると、numFoundよりも少ないドキュメントしか得られない

(The bot translated the original post https://lists.apache.org/thread/zpr3ck0npoygqkymq39dv4b1bohztlvh into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)
ソース: Solr 4.7 SolrCloud、コレクション内に3つのシャード、7つのレプリカがあります。
ターゲット: Solr 9.1.1 SolrCloud、3つのシャードと3つのレプリカです。
ソースバージョンは、SOLR-5875を含むカスタムの4.7.0バージョンで、これは非常に小さなパッチです。ターゲットバージョンは未修正のSolr 9.1.1です。このクライアントはバージョンを変更することを望んでいません。
スキーマはAtomic Updateの要件を満たしているため、古いクラスターにクエリを実行し、新しいクラスターに書き込むことで移行を行っています。フィールドの1つにフィルタをかけ、結果を効率的にページングするためにcursorMarkを使用して、バッチ処理を行っています。
クエリスレッドは10000件のドキュメントのバッチを取得し、それをキューに投入します。その後、インデクシングスレッドが処理します。クエリ側は、URLを使ってHttp2SolrClientを使用し、ターゲット側はCloudHttp2SolrClientをzk情報とともに使用し、シャードリーダーにのみ送信するオプションを設定しています。ソースコレクションはNRT(Near Real Time)で、これは4.7がサポートしている唯一のものだからです。ターゲットはTLOGです。両方のSolrClientオブジェクトはHTTP 1.1を使用するように設定されています。
あるバッチでは、常にnumFound(見つかった数)よりも5件少ないドキュメントがインデックスされます。それは一貫しており、常に5件です。移行中は更新が停止されています。前回の実行では、このバッチのnumFoundは3824942件で、インデックスされた件数は3824937件でした。
クエリバッチは常に10000件ですが、最後のバッチは4937件です。インデックスバッチは常に1000件ですが、最後のバッチは937件です。
おそらく問題はないと思いますが、キューサイズは500000です。インデックススレッドは2つあります。
移行コードに問題があるとは思っていません。他のバッチ(フィルタクエリで作成されたもの)はすべて正常に動作しており、インデックスされたドキュメントの数はnumFoundと一致しています。ドキュメントの総数は3000万件強で、このバッチは全体の10%強です。
Solr 4.7.0で、numFoundがcursorMarkで取得した総ドキュメント数と一致しないという問題を見たことがある人はいますか?これが起こる原因として考えられるのは、各レプリカでnumDocsのカウントが異なる場合ですが、各シャードのすべてのレプリカでこれらのカウントが同じであることを確認しました。
もう1つの可能性としては、uniqueKeyの値が複数のシャードに現れることがありますが、これはcompositeIdルーターがあるため、起こりにくいはずです。この状況を検出する方法はありますか?SolrJプログラムでそれを検出するアイデアはありますが、Solr 4.7に何か組み込まれているものがあることを願っています。
ありがとうございます、
Shawn
過去の類似のお問い合わせ
- Solr 8.7 を Java 11 Open J9 で起動するときに、コマンドラインオプションが認識されない
(The bot translated the original post https://lists.apache.org/thread/p3t5jbhwzy7xgyv1rlyzcqyl5d4295b5
into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)こんにちは、
現在、Java 8 から Java 11 への移行を進めています。
Windows上でOpenJ9 Javaを使ってSolr 8.7.0を起動すると、次のメッセージが表示されます:
JVMJ9VM007W Command-line option unrecognised: -Xlog:gc*:file="C:\solr\server\logs\solr_gc.log":time,uptime:filecount=9,filesize=20M JVMJ9GC063E Unable to open file '"C' for writing
その後、コンソールにはガベージコレクションの出力が続きますが、Solrは問題なく起動し、動作しているように見えます。同じリリースのJava 11 Hotspotに変更すると、警告や他の問題は見られません。
Ubuntu上のJava 11 Open J9でも同様の問題が発生します。Solrログには「Command-line option unrecognised」というメッセージが表示されますが、コンソールには表示されません。
solr_gc
ログは正しく作成され、内容も記録されています。これを確認したのは、OpenJDK 11.0.10+9リリースを使用した場合です。
以下は私たちの起動コマンドの例です:
C:/solr/bin/solr.cmd start -c -p 8983 -s C:/data/solr/8/clusters/is_cluster/nodes/node1 -a "-Dcom.ibm.crypto.provider.DoRSATypeChecking=false -Djetty.server=com.i2group.disco.search.solr.jetty.wrapper.XmlConfigurationWrapper -Dpkiauth.ttl=60000 -Dsolr-node-id=node1 -DzkCredentialsProvider=com.i2group.disco.search.solr.common.zookeeper.auth.internal.EncodedZkCredentialsProvider -Djdk.nativeCrypto=false" -m 2g -z "localhost:9983/is_cluster"
よろしくお願いします。
Lisa
- CustomBreakIteratorのパフォーマンスに関する問題
(The bot translated the original post https://lists.apache.org/thread/4kryrpfp9bdl3dbyb77vnmlfdlcg0dcd
into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)こんにちは、
現在、統合ハイライト機能でカスタムBreakIteratorを動作させる作業をしており、パフォーマンスに苦労しています。
私はパッセージの見出しをきれいにハイライトするためにBreakIteratorが必要です。これにより、ハイライトの開始が文の開始であり、終了が単語の終わりであるようにしたいです。また、いくつかの奇妙なエッジケースもあります。
すでにBreakIteratorをコーディングし、カスタムUnifiedHighlighterクラスに統合しましたが、このIteratorを使用すると、すべてのリクエストのqTimeが約1000から12000以上に上昇し、このアプリケーションでは許容できません。
こちらが私の実装へのリンクです。どこが非常に非効率的なのかを見つけることができません。(これらの関数が非常に頻繁に呼び出されることはわかっています)
他のアプローチも含め、すべての提案を歓迎します。
したがって、BreakIteratorや関連する情報について詳しく学ぶための良いリソースはありますか?ここではコードの調査が非常に難しいです。
次に検討しているもう1つのアプローチは、最終的なハイライトが見つかったときにこのハイライトの「トリミング」を行うことです。これにより、呼び出されるロジックの量が減少しますが、SOLRのスコアリングシステムが正しく考慮されない可能性があると思われます。
私が言ったように、すべての提案を歓迎し、先にお礼を申し上げます。
Jan Ulrich Robens
- ZooKeeperのupconfigはZK_HOST形式のURLを認識しません
(The bot translated the original post https://lists.apache.org/thread/tfpn1tlgosx67n5omzpkmrdzvsbr02bd
into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)こんにちは、
Solrのコントロールスクリプトを使用して新しいconfigsetをZooKeeperにアップロードしようとしたところ、-zパラメータがZK_HOST形式の文字列を認識しませんでした。
たとえば、
<ip-1>,<ip-2>,<ip-3>/solr
を使用すると、configが/solr znodeではなく、直接<ip-1>
にアップロードされます。これが意図された動作かどうかについて助けていただけないでしょうか?
注:
<ip-1>/solr,<ip-2>/solr,<ip-3>/solr
はうまく機能するようです。 - 検索ストリーミング式で特定のシャードからドキュメントを取得
(The bot translated the original post https://lists.apache.org/thread/vdqjcy6frv9c2kg97xh244ppj1v5jgc2
into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)「Search streaming expression」で単一の特定のシャード(または特定のレプリカ)からすべてのドキュメントをストリームできますか? 通常の「shards」パラメータを使用しても、Search streaming exprと一緒に使用すると効果がないと思います。
--ufuk
- 音声検索
javadocによると、BeiderMorseFilterFactory はStandardTokenizerの後に使用することが推奨されています。
おそらく、GermanNormalizationFilterFactoryやGermanLightStemFilterFactoryはBeiderMorseFilterFactoryと一緒に使用すべきではありません。ステムが切り捨てられると、その発音が一致しなくなる可能性があります。
一方、異なる表記法(ß <-> ss)で書かれたドイツ語の単語を一致させたいだけなら、GermanNormalizationFilterFactoryだけで十分です。BeiderMorseFilterFactoryは必要ありません。
追伸:私はドイツ語の話者ではなく、上記の主張を実際にテストしたわけではありません。ただの推測です。
トピックへ返信するには、ログインが必要です。