2009-05-18 2 views
1

레일스 앱 검색에서 스핑크스를 사용하고 있습니다. 나는 '높이'라는 부유 필드가 있습니다. 이 필드에서 정확한 값 (즉, 6.5가 아닌 정확히 6.0)을 검색 할 수 있어야합니다. 나는 또한 필드를 정렬 할 수 있어야합니다. 내가 지금까지 무엇을 가지고사고 스핑크스로 float 필드로 검색 및 정렬

:

indexes height, :sortable => true 

문제 : 이 제대로 정렬하지 않습니다 내가 '6'

답변

3

당신은 부동 소수점 값을 처리하는 경우를 검색하면 6.0 및 6.5를 반환 당신이 추가하면

define_index do 
    # ... other fields 

    has height 
end 

속성은 실제로 기본 (기준 정렬은 다음과 같습니다 : 필드에 정렬, 수행중인 모든 CREA는 대신 필드의 속성으로 그들을 가지고하는 것이 좋습니다 Thinking Sphinx의 두뇌 아래에서 속성을 썼다.) 그래서 이것은 당신이 분류 할 수 있어야한다. I 필드에게 별명을 준

define_index do 
    # ... other fields 
    indexes height, :as => :height_field 

    has height 
end 

때문에 : 당신은뿐만 아니라 필드가 필요합니다, 그래서 물론

,이,하지만, 높이에 대한 검색에 당신을 허용하지 않습니다 같은 이름의 필드와 속성을 가질 수 없습니다.

이 모든 것을 감안할 때, 당신은 플로트를 찾고 있으며 스핑크스는 모든 필드가 문자열입니다. 6.5라는 단어는 두 단어로 - 전체 중지/마침표로 구분 된 6과 5로 읽습니다. 그래서 저는 불행히도 일의 측면이 우아하게 해결 될 것이라고 기대하지 않습니다.

관련 문제