0

Amazon Cloudsearch를 API 게이트웨이와 통합합니다. 구조화 된 쿼리 구문 검색을 시도 할 때를 제외하고는 모든 것이 잘 작동합니다.Cloudsearch 및 API 게이트웨이 구조화 된 쿼리 구문 검색

나는이 구문을 Cloudsearch Test Search에서 사용한다. (phrase field = title 'search') 그것은 훌륭하게 작동한다. 나는 그들의 JSON을보고 그들은 같이 보내 :

CloudSearchAPI/검색 Q = (구 + 필드 % 3Dcontent + '검색') = 구조화 & q.parser

내 API는 Cloudsearch와 통합

HTTP 엔드 포인트 그 형식과 일치하지만,하는 나는 다음과 같은 오류를 얻을 동일한 쿼리를 수행 할 때

APIURL/(구 + 필드 % 3Dcontent + '검색') 3Dstructured

[을 추천하지 않습니다 & q.parser의 % 외부 메시지 필드 사용]

마치 "="기호가 클라우드 검색 끝점으로 전송되기 전에 디코딩 된 것처럼 보입니다. 누구든지 이것을 극복하는 방법에 대한 아이디어가 있습니까?

또한 자바 스크립트를 사용하여 AJAX 요청을 보내고 있습니다. 여기에 내가 구문 검색을 인코딩하고 어떻게 : 나는 필드 = 내용 부분

감사를 포함하지 않는 경우

encodeURIComponent("(phrase field=content '" + term + "')") //turns in to: phrase%20field%3Dcontent%20'search' 

의미가 있습니다!

+0

이 HTTP 또는 HTTP_PROXY 통합인가? –

+0

그것은 HTTP 통합 –

+0

좋아, 당신은 API 게이트웨이 오른쪽에 쿼리 문자열 매개 변수로 'q.parser'정의? 또한 'APIURL/(구문 + 필드 % 3Dcontent +'검색 ') 및 q.parser % 3Dstructured가 실제로'APIURL /? q = (구문 + 필드 % 3Dcontent + '검색') & q.parser % 3Dstructured ' –

답변

0

라이브러리를 사용하여 AJAX 요청 (예 : Axios, jQuery)을 수행하는 경우 요청을 보내기 전에 해당 문자열을 URI 인코딩 할 필요가 없을 것입니다. 나는 내 응용 프로그램에서 다음 필터 쿼리를 사용하고 있습니다 (귀하의 요청에 매우 유사한 구문이다)와 그것을 작동 잘 encodeURIComponent없이 :

fq: '(term field=search_type_lit \'Suggestion\')'

당신은 (AJAX를 라이브러리를 사용하기 전에 해당 문자열을 인코딩하는 경우 아마 당신을위한 인코딩을 제공 할 것입니다) 그것은 두 번 인코딩되고 CloudSearch는 유효한 쿼리 구문으로 인식하지 못합니다.

예를 들어 으로 인코딩 한 다음 다시 AJAX 라이브러리로 인코딩하면 등호에만 혼자있을 수 있습니다.

  • 인코딩되지 않은 : =
  • 번 인코딩 : %3D
  • 두 번 인코딩 : %253D
관련 문제