gpt4 book ai didi

ruby-on-rails - Sunspot solr, order_by 整数值彻底坏掉

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:04 25 4
gpt4 key购买 nike

我在 solr 中使用 sunspot gem 时遇到问题

我正在使用来自 git 的最新 gem(2.1.1 也尝试过 2.1.0),我已经尝试过 solr 版本 - 3.2、3.5、4.2、4.9

问题是按整数值排序完全不起作用。

我的代码是:

   @ads = Ad.solr_search do
paginate :page => params[:page], :per_page => 10000 #just for debug, not working with 25 as well
order_by :priority, :desc
end

在通过以下代码初始化的模型太阳黑子中:

searchable do
text :search_name
text :search_description
integer :id
integer :state_id
integer :city_id
integer :district_id
boolean :moderated
integer :category_id
integer :priority
integer :price_index
latlon(:location) { Sunspot::Util::Coordinates.new(lat, lon) }
integer :ad_type_id
boolean :active
time :created_at
end

结果一团糟 - http://i.imgur.com/Y7gazWw.png

我希望优先级最高的广告会首先显示,但它们会随机显示在最后(!)页面上。

有趣的是 - 当我应用更多过滤器时 - 比如价格、city_id、state_id 和其他东西 - 它要么开始正常工作,要么至少不那么难出现故障(比如第一页上显示的优先记录,但其中一些仍然是洗牌)。但是我应用的过滤器越少,排序越多,就会出现故障,直至完全损坏。

我尝试用谷歌搜索类似的问题,但没有发现任何问题,也尝试了所有可能影响该问题的方法——不同的 solr 版本,不同的 gem 版本,尝试稍微更改代码(但更改不多,以重现问题 3 行代码就足够了)- 没有改变行为。我已经做了大约 30 次重建索引——每次我都尝试了不同的版本

任何人都可以建议如何解决它或者至少可以尝试其他什么

提前致谢!

最佳答案

我也有同样的问题。按整数类型排序无效。

所以我使用了一些棘手的方法。这不是很好的解决方案。但这将是错误修复之前的临时替代方案。

按时间类型排序效果很好。所以整数转换为时间。

我的代码是:

searchable do
...
integer :priority
time(:priority_to_time){DateTime.new(2014, 1, 1, 0, 0, 0) + self.priority}
end

在搜索代码中

Post.search do
...
order_by(:priority_to_time, :desc)
end

是的,这是非常奇怪的代码。但它有效。

如果大家有更好的想法,请多多指教。

关于ruby-on-rails - Sunspot solr, order_by 整数值彻底坏掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25092827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com