2015-01-13 5 views
0

생각하는 스핑크스는 음의 값을 가진 레코드를 찾지 못한다. 내 경우, 열은 "site_id"이며 -1을 포함 할 수 있습니다 (우리는 NULL 대신 -1을 사용합니다). 내 인덱스 (I 별도로 시도 네 가지 예제와 함께) 아래의 예제처럼 보이는 :생각하는 스핑크스 - 부정적인 속성에 의한 필터링이 작동하지 않는다.

ThinkingSphinx::Index.define :incident, with: :active_record, delta: ThinkingSphinx::Deltas::ResqueDelta do 
    indexes site_id 
    # indexes site_id, type: :float 
    # has site_id 
    # has site_id, type: :float 
end 

내가 this answerthis answer에 따라된다 시도한 솔루션은,하지만 나를 위해 작동하지 않습니다. 내 스핑크스 버전은 == 연산자를 지원하지 않습니다. 내가 얻을 : 부동 소수점 필터 유형이 버전

에서 지원 만> =, < = 사이에 스핑크스를 업그레이드하는 것은 정말 옵션이 아니다 :

sphinxql. 이 작업을 수행하기 위해 수행 할 수있는 다른 작업은 무엇입니까?

+0

속성의 유형을 변경하는 경우 색인을 재생성합니까? 스핑크스 색인은 다시 만들어야합니다 (ts : 다시 작업?) - 올바른 형식의 필터도 변경해야한다는 언급을 읽었습니까? – barryhunter

+0

예, ts : rebuild를 실행했습니다. 네, 필터를 플로트로 실행했지만 스핑크스 버전에서는 허용하지 않습니다 : "sphinxql : only> =, <=, 그리고이 버전에서는 부동 소수점 필터 유형이 지원됩니다". – Jonathan

+0

bigint 유형을 시도 했습니까? 최소한 서명되어 있어야합니다. 필터를 다시 쓸 수도 있습니다. 예 :'== -1'은'<= 0.5'로 재 작성 될 수 있습니다. – barryhunter

답변

1

bigint 유형이 유용해야합니다. 서명 된 유일한 sphinx 속성 정수 유형입니다.

(부동 소수점을 구현해야하는 이유는 부동 소수점이 잘못 구현되어 있기 때문입니다. 스핑크스는 필터로 스핀을 수행하지 않지만 IF 함수로 해결할 수 있습니다. thinkingsphinx)