Java 응용 프로그램에서 Sphinx (0.99 버전)를 사용하고 있습니다. 레일즈 앱에서 thinking_sphinx 플러그인과 함께 사용합니다.전체 색인을 다시 만들지 않고도 스핑크스 색인의 오래된 결과를 피하는 방법은 무엇입니까?
Java 응용 프로그램의 경우 델타 색인을 사용하려고합니다. 대부분 기존 레일 구성 및 응용 프로그램 동작에서 알아 냈습니다.
내가 검색하는 모델 개체에 '델타'라는 부울 필드가 있습니다. 레코드를 업데이트하거나 만들 때마다 해당 델타 필드를 true로 설정합니다.
스핑크스 구성의 델타 및 기본 인덱스 쿼리가 해당 델타 필드를 기반으로 올바른 레코드를 선택했음을 확인했습니다.
또한 내 코드는 업데이트하거나 삽입 할 때마다 델타 재 인덱스를 트리거합니다 (데이터를 절대 삭제하지 않습니다).
레코드를 업데이트 한 후에는 델타 인덱스에 올바르게 표시되지만 부 인덱스는 여전히 주 인덱스에 남아 있습니다. 'search'명령을 수동으로 실행하면이 사실을 알 수 있습니다.
지금까지이 모든 것은 내 레일 앱과 동일하게 작동합니다. 레일 앱은 검색 명령으로 확인해도 주 색인에 부실 사본이 표시됩니다.
그러나 레일즈 앱을 통해 검색하면 더 이상 부실 레코드가 표시되지 않습니다 (명령 줄 검색에 여전히 해당 레코드가 있음에도 불구하고). 그러나 Java 응용 프로그램을 통해 검색하면 결과에 여전히 부실 레코드가 표시됩니다.
어떻게 든 think_sphinx 플러그인이 어떤 식 으로든이 문제를 해결하고 있거나 어딘가 잘못된 구성 입력을 가지고 있다고 생각합니다.
나는 이것을 특별한 방법으로 처리하고 있는지를 알기 위해 thinking_sphinx 소스를 훑어 보았지만 명백한 것을 보지 못했습니다.
이상하게도 Java 응용 프로그램에서 동일한 동작을 원합니다.
My (Java) sphinx config는 here입니다.
내 문제를 완벽하게 해결했습니다. 많은 감사드립니다. –