MongoDB를 사용하여 Sphinx 검색을 사용하여 DataSource로 사용합니다

StackOverflow https://stackoverflow.com/questions/1680633

  •  16-09-2019
  •  | 
  •  

문제

우리는 MySQL 대신 일부 웹 응용 프로그램에 MongoDB를 사용하기로 결정했지만 MongoDB에 저장된 모든 데이터를 색인화/검색하기 위해 Sphinx에 머물기를 원합니다. MongoDB Object-ID가 기본적으로 해시이기 때문에 이제는 스핑크스를 사용하는 데 한 가지 문제가 있습니다. Sphinx 문서에서 언급했듯이 :

모든 문서 ID는 고유 한 서명되지 않은 정수가 아닌 정수 번호 (빌드 시간 설정에 따라 32 비트 또는 64 비트) 여야합니다.

그렇다면 ...이 문제를 해결하는 가장 좋은 방법은 무엇입니까? Mongodb Object-id를 0이 아닌 정수 (및 뒤로)에 어떻게 매핑 할 수 있습니까?

업데이트

Casey의 대답은 조사 할 수있는 올바른 방향이지만, String 속성은 SQL DataSource에만 사용할 수있는 현재 개발자 Version에 있습니다. XMLPipe의 경우 결제 소스에 패치를 적용해야합니다. 이에 대한 자세한 내용은 다음을 참조하십시오 스핑크스 포럼.

도움이 되었습니까?

해결책

객체 ID를 Sphinx Document ID로 사용할 수는 없습니다. MongoDB 객체 ID는 Sphinx의 문서 ID의 최대 크기보다 큽니다.

대신, Sphinx가 처리 할 XML을 생성하는 동안 고유 한 ID를 증가시킬 수 있습니다 (XMLPIPE를 사용하여 Mongo 데이터를 Sphinx로 가져오고 있다고 가정하고 있습니까?). MongoDB 객체 ID를 Sphinx에서 문자열 속성으로 저장합니다.

이 작업을 수행하려면 Sphinx의 최신 개발 버전이 필요합니다. 자세한 내용은이 질문에 대한 내 답변을 참조하십시오. auto_increment id를 사용하지 않고 스핑크스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top