임의의 항목이지만 데이터의 특정 하위 집합에있는 데이터를 반 무작위로 추출해야합니다. 그리고 이것을 여러 번해야합니다.
첫 번째 접근 방식은 Postgres를 사용 ORDER BY random()
하고 WHERE
문으로 필터링하는 것이지만 성능이 좋지 않습니다.
의견 있으십니까?
결국 Tire (Ruby gem)를 통해 Elasticsearch를 사용하게되었습니다. 적절한 인덱싱을 통한 성능 덕분에 페이지 로딩 시간이 30 초 이상에서 1 초 미만으로 늘어났습니다 (DB 크기와 무관).
예:
Recipe.search do |search|
search.sort do |sort|
sort.by({
_script: {
script: "Math.random()",
type: "number",
params: {},
order: "asc"
}
})
end
search.size 1
end
다음을 생성합니다.
{
"sort": [{
"_script": {
"script": "Math.random()",
"type": "number",
"params": {},
"order": "asc"
}
}],
"size": 1
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다