Sunspot-solr 4.0私が同義語ファイルを更新すると、検索で何も変更されません。 synonyms.txtを変更した後にを再索引付けする必要がありますか、それとも他の同義語ファイルを更新するトリックがありますか?SOLR:synonyms.txtファイルの変更は、再インデックスなしで有効になりますか?
答えて
これは、同義語をいつ展開するかによって異なります。クエリ時に展開している場合は、インデックスを再作成することなく更新が表示されますが、インデックス時に展開する場合(推奨される方法)、インデックスに含まれる新しい同義語を取得するためにインデックスを再作成する必要があります。
時間を照会するために比較して、インデックス時の膨張を推薦背後にある理由はdescribed in the old wiki次のとおりです。
問合せ時にarriseできる2つの潜在的な問題があるので、これは次のとおりです。
はLuceneのQueryParserは白をトークン化アナライザにテキストを入力する前にスペースを空けておく必要があります。そのため、アナウンサーは単語sea biscitを検索すると「sea」と「biscit」という単語が別々に与えられ、同義語と一致することはわかりません。
QueryParserは文字列全体をアナライザに渡しますが、SynonymFilterがシノニムを展開するように設定されている場合は、QueryParserが結果のトークンリストを元に戻しますアナライザを使用すると、目的の効果を持たないMultiPhraseQueryが作成されます。これは、アナライザが、2つの用語が同じ位置を占めることを示すためのメカニズムが限られているためです。「フレーズ」が用語と同じ位置を占めることを示す方法はありません。私たちの例では、結果として得られるMultiPhraseQueryは、 "シービスケット"の単純なケースと一致しない "(sea | sea | seiscusuit)(biscuit | biscit)"となるでしょう。
マルチ-word synonyms、idfの違いはまだインデックス時間の同義語を良い考えにします。
クエリ時にSynonymFilterをシノニムTV、Televesion、およびexpand = "true"と使用するインデックス "text"フィールド付きのインデックス "text:TV"という用語を含む数千ものドキュメントが、 「テキスト:テレビ」という用語を含む数百のドキュメント テキストのクエリ:TVは(テキスト:テレビテキスト:テレビ)に展開され、テキストの下位のdocFreq:テレビは「テレビ」によく似たドキュメントを提供しますより高い得点を得て、それに匹敵する「TV」と一致するドキュメントを作成します。これは、クライアントにとってやや直感的です。索引時間の拡張(または短縮)は、元のテキストがどの用語に含まれていたかにかかわらず、すべての文書について同じidfになります。
Better synonym handling in Solrで実際に何が起こっているのかについて実際に詳細な説明があります。
これらの問題とトレードオフを認識している限り、クエリ時間の同義語を使用するとうまくいく可能性がありますが、クエリに対してテストして結果を期待してください落とし穴に気づく
- 1. MSSQLが変更されないインデックス有効ステータス無効インデックス
- 2. 無効なインデックスは、再生中にゼロになります
- 3. ASP.NET - IISExpressを再起動するまで変更が有効にならない
- 4. プリオンを有効にしないと、顧客のサブスクリプションサイクルの変更がすぐに有効になります
- 5. MS Access "id"は有効なインデックスではありません
- 6. 有効なURLは有効なURLではありません
- 7. なぜ有効な再帰ターゲットはありませんか? Clojureので
- 8. Mvvm有効でないDataGridの変更を防止します
- 9. Pythonの変数名は有効なファイル名ですか?
- 10. なぜWordpressで変更が有効にならないのですか?
- 11. ユニティ - パネルはすぐに無効になり、すぐに再度有効になります(C#)
- 12. `currentBackgroundColor`は有効で有用なCSSのカラー値キーワードになりますか?
- 13. 有効なフォームはdjangoで有効ではありません
- 14. "エラーアプリケーションドメインは有効なドメインではありません。"しかし、それは有効なドメインです
- 15. 無効なjsonを有効なjsonに変換します
- 16. 無効なネストされたjsonを有効なものに変換してリストに変更します
- 17. ブラウザのサイズ変更でメディアクエリが有効にならない
- 18. 重要なロケーション変更サービスは、ロケーションサービスを有効または無効にするユーザーに依存しますか?
- 19. TRエレメントは、ng-clickでチェックボックスをトリガーしますが、チェックボックスの変更は有効になりません。
- 20. google.auth.exceptions.DefaultCredentialsError - ではない有効なJSONファイル
- 21. Maximind geoipupdate mmdb.gzは有効なgzipファイルではありません
- 22. WebView#setBackgroundResourceはどの段階で有効になりますか?
- 23. HTMLのJHIPSTERの変更は有効ではありません
- 24. Z-インデックスは有効ではありませんか?
- 25. チェックボックスの変更ではなく、読み込み時にクロージャが有効になります
- 26. スパイダーの混乱しているエラー「一意にインデックス付けされたインデックスオブジェクトでのみ有効な再インデックス」
- 27. アクセス.mdb有効なファイル名ではありません。
- 28. Xamarin:ImportAfterが有効な短いファイル名ではありません
- 29. ファイルは有効なXMLファイルではありません。ファイルが有効なXML文書ではありません
- 30. MariaDB 10で大きなインデックスを有効にする方法は?
ありがとうございます。何百万ものレコードを再索引付けするには時間がかかりますが、時間を節約できますか? –
あなたの同義語の影響を受ける文書を再インデクシングします:-) –
@MatsLindh文書に出てくる "seabiscuit"の単純なケースとは一致しないこの行 "sea | seabiscuit(biscuit | biscit)"を理解できませんでした。 MultiPhraseQueryには "seabiscuit"が存在するためです。 – user2478236