2016-08-05 2 views
0

Thinking Sphinx의 쿼리 생성에 문제가 있습니다. 빈 줄기 "jill | jeffrey"와 같은 쿼리를 입력하면 예상되는 빠른 인덱스 루프 대신 슬로우 SQL 쿼리가 표시됩니다.Thinking Sphinx의 이상한 쿼리

SELECT table.id, table. (LOWER (table.FullName) LIKE '% 잭 또는 \ "콩 줄기 \"또는 질 또는 제프리 %') table.FullName의 ASC의 LIMIT BY ORDER 10

이 쿼리가 이상하다 table FROM하면 FullName 여러 가지 이유로 첫째, 부울 검색 대신 오탈 된 쿼리 버전의 와일드 카드 조회를 얻습니다. 둘째로, 성 (FullName)으로 주문하는 다른 필드를 요청한 경우 FullName으로 검색합니다.

Thinking Sphinx는 지정되지 않은 열 (sortable => true)을 기준으로 정렬 할 때 Thinking Sphinx가 해당 인덱스를 무시하고 원시 SQL 쿼리로 드롭된다는 것을 알고 있습니다. 이는 문자열이 아닌 열에서도 마찬가지입니다. 그러나 어느 쪽도 여기의 경우가 아니다.

왜 원시 SQL을 사용합니까?

답변

0

Thinking Sphinx가 해당 SQL 쿼리를 작성하지 않는다고 확신합니다. 궁금한 점이 있습니다 : 다른 보석 (Gemfile에 있거나 다른 보석과의 의존성이 있습니까?)에 검색 기능이 추가되어 있습니까? 예를 들어, activeadminmeta_search에 종속되어 있습니다.

는 이 주위

한 가지 가능한 방법은 Gemfile (에thinking-sphinx 전에 을 나열 따라서, TS 후로드되는 (이 문제가되는 원인을 또는 어떤 보석) activeadmin을하는 것입니다, 당신이하고있는 search 방법을 삽입 기대).