2017-02-06 9 views
0

하나의 큐에서 2 개의 쿼리를 실행하고 첫 번째 쿼리의 결과를 다른 쿼리의 IF 표현식과 일반 MySQL 쿼리에 전달해야합니다.스핑크스 쿼리에서 커스텀 변수 사용하기

는 예를 들어, 나는 두 번째 쿼리에 @average 변수를 전달하려고 :

SET @average=(SELECT AVG(weight()) avg_rank FROM common WHERE match('query text') OPTION ranker=expr('sum(word_count)*100 + sum(lcs*user_weight)*100 + bm25 + sum(exact_order)*200'); 

SELECT *, weight() as rank, 2000 * exp(- 9.594E-5 * abs(1486121357 - _rank_date)/1000) AS date_rank, IF(_importance > @average,_importance,0) AS importance_rank, (rank + date_rank + importance_rank) as total_rank FROM common WHERE match('query text') OPTION ranker=expr('sum(word_count)*100 + sum(lcs*user_weight)*100 + bm25 + sum(exact_order)*200') 

을하지만 난 구문 분석 오류가 발생했습니다. 내가 어떻게 할 수 있니?

답변

0

스핑크스에서 그렇게 할 수 있다고 생각하지 마십시오.

응용 프로그램은 첫 번째 쿼리를 실행하고 값을 캡처 한 다음 두 번째 쿼리에 명시 적으로 작성해야합니다.

그러나 표현식 jsut가 어쨌든 (결과를 재정렬하거나 필터링한다고 말하기보다는) 결과를 수정하는 것으로 보이기 때문에 스핑크스를 사용하여 IF 표현식을 계산하는 대신 응용 프로그램에서 처리합니다.