2012-02-01 1 views
0

나는 기사 데이터베이스를 검색하기 위해 스핑크스를 사용하고 있으며 최신 기사가 먼저 표시되도록 작성 날짜에 가중치를 넣고 싶지만 관련성에 관계없이 최신 기사를 표시하므로 정렬을 사용하고 싶지는 않습니다.사고 스핑크스에서 기사 작성일의 무게를 어떻게 늘릴 수 있습니까?

작성일에 가중치를 부여 할 수있는 방법이있어서 최신 기사를 표시하는 경향이 있지만 순서에있는 다른 요소를 고려해야합니까?

답변

2

가중치와 생성 타임 스탬프를 혼합하여 고유 한 정렬 알고리즘을 만들어야합니다. 아마도 타임 스탬프를 코어 가중치로 사용하는 것이 가장 좋습니다. 기본적으로 훨씬 더 큰 값이 될 것이므로 - 그리고 추가하기 전에 관련성 점수를 올리십시오. 역시 수학 함수를 사용할 커버하고 Sphinx docs -

Model.search :sort_mode => :expr, :order => 'created_at + (@weight * 1000)' 

이에 대한 자세한 사항에 대한 Thinking Sphinx docs를 참조하십시오.

+0

그런 일을 끝내게되었습니다. index에 사용자 정의 필드를 생성했습니다 :'hasDATEDIFF (NOW(), products.created_at) ', : as => : days_old, : type => : integer' 그리고': order =>'@weight * (1 + (1/days_old))' – Diego

+0

스핑크스 v1 또는 v2를 사용중인 경우 http://pat.github.io/thinking-sphinx/searching/ts2에서 설명한대로 시간 세그먼트 정렬을 시도 할 수 있습니다. html # sorting –

+0

가중치가 크고 최근 기록이되면 가끔 깨질 수 있습니다. 따라서 오버플로가되어 총점이 0에 가깝습니다. 같은 효과를 내기 위해 '@weight * 10 + created_at/100'을 사용했으나 문제의 종류 ... – davidhq