私はApacheSolr Search Integrationという名前の drupal 用の提供されたモジュールを使用して、Drupal サイトの検索機能を強化するために Apache Solr を使用しています。私は Solr の初心者であり、Solr の基本的な理解を持っているため、このクエリが法外に聞こえる場合は、事前にお詫び申し上げます。
ds_myDate
最初に検索結果のソートに使用したという名前の drupal のフックの 1 つを介して追加された日付フィールドがあります。日付ブースティングを使用することにしました。これにより、検索結果は単に日付の降順で表示されるのではなく、関連性に基づいて表示され、日付でブーストされます。recip(ms(NOW/HOUR,ds_myDate),3.16e-11,1,1)
HTTP 400エラーが発生したため、boostフィールドを追加して同じものを実装するようにフックを更新したら、
数値以外の従来の日付フィールド ds_myDate では ms() 関数を使用できません
同じことをグーグルで検索すると、このエラーを防ぐために、レガシー DateField の代わりに TrieDateField を使用することが提案されました。tds_myDate
提案された命名規則に従って名前が付けられた TrieDate フィールドを追加し、ブーストをrecip(ms(NOW/HOUR,tds_myDate),3.16e-11,1,1)
効果的に実現したようにブーストを実装しました。ただし、これには、すべてのコンテンツ (500k レコード近く) のインデックスを再作成して、新しい TrieDate フィールドを設定し、それを効果的に使用できるようにする必要があります。
ds_myDate
mysql テーブルフィールドで変更クエリを実行してそのタイプを変更するなど、すべてのコンテンツを TrieDate フィールドに変換するなど、すべてのコンテンツのインデックスを再作成するよりも効果的な回避策があるかどうかを知りたいと思います。私は Solr の仕組みに慣れていないので、そのようなオプションが実現可能かどうか、またこの場合はどうするのが正しいかを知りたいと思うでしょう。