我正在使用 Apache Solr 为我的 Drupal 站点中的搜索功能提供动力,使用一个名为ApacheSolr Search Integration的 drupal 贡献模块。我是 Solr 的新手并且对它有基本的了解,因此如果这个问题听起来离谱,我希望提前表达我的歉意。
我通过一个名为的drupal 钩子添加了一个日期字段,该钩子ds_myDate
最初用于对搜索结果进行排序。我决定使用date boosting,以便根据相关性显示搜索结果并按日期进行提升,而不仅仅是按日期的降序显示。一旦我更新了我的钩子以通过添加一个 boost 字段来实现相同的钩子,因为recip(ms(NOW/HOUR,ds_myDate),3.16e-11,1,1)
我收到一个 HTTP 400 错误说明
不能在非数字旧日期字段 ds_myDate 上使用 ms() 函数
谷歌搜索同样建议我使用 TrieDateField 而不是 Legacy DateField 来防止此错误。tds_myDate
添加一个按照建议的命名约定命名的 TrieDate 字段并像recip(ms(NOW/HOUR,tds_myDate),3.16e-11,1,1)
有效地实现提升一样实现提升。但是,这需要我重新索引所有内容(接近 50 万条记录)以填充新的 TrieDate 字段,以便我能够有效地使用它。
我想知道是否有一种有效的解决方法,而不是重新索引我的所有内容,例如将我的内容转换ds_myDate
为 TrieDate 字段,例如在 mysql 表字段上运行更改查询以更改其类型。由于我不熟悉 Solr 的工作方式,因此我会要求知道这样的选择是否可行,以及在这种情况下应该做些什么。