首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索:增加未来的约会

搜索:增加未来的约会
EN

Stack Overflow用户
提问于 2020-06-18 18:57:57
回答 1查看 405关注 0票数 1

我在一个带有ElasticSearch 6.8服务器的Rails项目中使用Search腿。我正在努力增加某些文档,这些文档的年份字段与今年或未来的一年相等。

我试过使用boost_where和最近的boost_by,但两者都不起作用。boost_by生成一个function_score函数,该函数在ElasticSearch中出错。这是我最近的尝试。

Model.search('value', boost_by: { year: { scale: '5y' } })

ElasticSearch似乎不喜欢日历间隔(5y),尽管这应该是有效的。下面是错误的原因:

代码语言:javascript
复制
          "caused_by": {
            "type": "number_format_exception",
            "reason": "For input string: \"5y\""
          }

我尝试过将origindecayscale一起设置,但这似乎没有任何帮助。

以下是Searchkick生成的查询(模型和字段名因非常特定的域模型而更改)。

代码语言:javascript
复制
  Model Search (163.5ms)  model_development/_search {"query":{"function_score":{"functions":[{"weight":1,"gauss":{"year":{"scale":"5y"}}}],"query":{"bool":{"should":[{"dis_max":{"queries":[{"multi_match":{"query":"Abreu","boost":10,"operator":"and","analyzer":"searchkick_search","fields":["*.analyzed"],"type":"best_fields"}},{"multi_match":{"query":"Abreu","boost":10,"operator":"and","analyzer":"searchkick_search2","fields":["*.analyzed"],"type":"best_fields"}},{"multi_match":{"query":"Abreu","boost":1,"operator":"and","analyzer":"searchkick_search","fuzziness":1,"prefix_length":0,"max_expansions":3,"fuzzy_transpositions":true,"fields":["*.analyzed"],"type":"best_fields"}},{"multi_match":{"query":"Abreu","boost":1,"operator":"and","analyzer":"searchkick_search2","fuzziness":1,"prefix_length":0,"max_expansions":3,"fuzzy_transpositions":true,"fields":["*.analyzed"],"type":"best_fields"}}]}}]}},"score_mode":"sum"}},"timeout":"11s","_source":false,"size":10000}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-18 22:00:03

年份可能不是受支持的日期格式,因为它没有绝对表示形式。一天是总是 24小时,但是一年有时是364天,通常是365天。与其解决这一复杂问题,我们可能会在几天内停止。

如果你愿意,你可以用天数来衡量你的比例:

代码语言:javascript
复制
Model.search('value', boost_by: { year: { scale: '1825d' } })
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62457450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档