我将DOB存储在MySQL DB中,在SOLR中索引数据时,我希望计算年龄(以年为单位)并将其存储在另一个字段中有办法做到这一点。我可以计算年龄时,用户第一次注册,并进入DOB,但然后没有办法让我知道更新年龄的用户每年。如果在编制索引时执行此操作不是正确的方法,您能否提供一些建议谢谢
o3imoua41#
不要认为可以获得随响应返回的计算字段。计算可以在客户端轻松完成,消耗Solr响应。Function queries允许您在使用字段值时对其进行大量操作。例如,当前日期和dob之间的毫秒
ms(NOW,dob)
但它们只是我们在查询中使用的,并不影响响应。
bbmckpt72#
如前所述,您可以使用函数查询来计算年龄。您也可以使用字段名称别名来返回Solr响应中的新字段,例如:
&fl=age:div(ms(NOW,dob_dt),86400000)
将返回一个名为age的新字段,其中包含dob_dt字段和当前日期之间的差值。函数query ms(NOW,dob_dt)将返回从dob_dt到当前日期之间的毫秒数。div()函数将此值转换为天数(即1000606024)。将此函数扩展为转换为年份(100060* 6024365):
&fl=age:div(ms(NOW,dob_dt),31536000000)
2条答案
按热度按时间o3imoua41#
不要认为可以获得随响应返回的计算字段。
计算可以在客户端轻松完成,消耗Solr响应。
Function queries允许您在使用字段值时对其进行大量操作。
例如,当前日期和dob之间的毫秒
但它们只是我们在查询中使用的,并不影响响应。
bbmckpt72#
如前所述,您可以使用函数查询来计算年龄。您也可以使用字段名称别名来返回Solr响应中的新字段,例如:
将返回一个名为age的新字段,其中包含dob_dt字段和当前日期之间的差值。函数query ms(NOW,dob_dt)将返回从dob_dt到当前日期之间的毫秒数。div()函数将此值转换为天数(即1000606024)。将此函数扩展为转换为年份(100060* 6024365):