2010-05-19 2 views

답변

1

데이터베이스에 JSON 개체에 저장된 중요한 텍스트가 들어있는 필드가 있어야합니다. JSON 개체가 책인 경우 JSON을 데이터베이스에 커밋하면 데이터베이스 필드에 제목, 작성자 및 게시자를 일반 텍스트로 저장합니다 (search_text). 그것은 html_strip = 1 conf의 설정을 통해 HTML을 제거 할 수 있지만

인덱서에 대한 귀하의 SQL 쿼리, 나는 스핑크스 원시 JSON을 처리하는 방법을 테스트하지 않았습니다이

sql_query = SELECT id, search_text FROM json_object; 

처럼 보일 수 있습니다. 정말로 더러운 것을 원한다면 인덱싱시 일련의 중첩 된 MySQL 문자열 REPLACE() 함수를 사용하여 json 필드에서 구두점 및 JavaScript 구문을 제거 할 수 있습니다.

sql_query = SELECT id, REPLACE(REPLACE(raw_json, ']', ' '), '[', ' ') as search_text FROM json_object; 

하지만 그렇게하고 싶지 않습니까?

+0

위대한 팁 주셔서 감사합니다! 하하, 아니, 그 일을 정말로하고 싶지는 않지만, 다른 모든 일이 실패하면 그것은 훌륭한 대안이다. 흠 –

1

더 나은 해결책 : an XML pipe을 사용하십시오. Sphinx에서는 파이프를 빌드하기 위해 실행할 스크립트를 지정할 수 있습니다. 이 스크립트를 사용하여 데이터를 선택하고 json 문자열을 디코딩 한 다음 XML로 추출하십시오. XML 내에 스키마를 포함 할 수도 있습니다. 그러면 동적으로 생성 된 스키마를 가질 수있는 이점이 있습니다.