문제

나는 항상 데이터베이스를 쿼리했기 때문에 Zend Search Lucene과 같은 앱/클래스를 본 적이 없습니다.

zend_search_lucene은 문서와 함께 인덱싱을위한 원자 객체로 작동합니다. 문서는 이름이 지정된 필드로 나뉩니다. 필드에는 검색 할 수있는 컨텐츠가 있습니다.

문서는 zend_search_lucene_document 클래스로 표시 되며이 클래스의 객체에는 문서의 필드를 나타내는 Zend_search_lucene_field의 인스턴스가 포함되어 있습니다.

모든 정보를 인덱스에 추가 할 수 있습니다. 응용 프로그램 별 정보 또는 메타 데이터는 문서 필드에 저장하고 나중에 검색 중에 문서로 검색 할 수 있습니다.

따라서 이것은 기본적으로 데이터베이스를 포함한 모든 것에 적용 할 수 있다고 말합니다. 여기서 핵심은 검색을위한 색인을 만드는 것입니다.

내가 파악하려는 것은 응용 프로그램에 인덱스를 정확히 저장 해야하는 곳입니다. 예를 들어 데이터베이스, 제조업체, 모델에 전화기가 저장되어 있습니다. 어떻게 인덱스를 분류해야합니까?

내가 말하는 사용자의 색인을 만들고 있다면, 주소가 공개적으로 볼 수 있기를 원하지 않을 것입니다. 나는 그것이 모두 함께 작동하는 방식에 대해 혼란스러워합니다. 그것.

도움이 되었습니까?

해결책

루센 인덱스는 데이터베이스 외부에 저장됩니다. 컨트롤러, 모델 및보기의 자매로서 "데이터"디렉토리에 저장합니다. 그러나 어디서나 보관할 수 있습니다. 쿼리를 위해 인덱스를 열 때 경로를 지정하면됩니다.

기본적으로 데이터베이스에 저장된 문서의 중복 사본이므로 직접 동기화해야합니다. 그것은 단점 중 하나입니다. 데이터베이스에 대한 쿼리 결과를 기반으로 Lucene 지수를 채우려면 코드를 작성해야합니다. 데이터베이스에 데이터를 추가 할 때 Lucene 인덱스도 업데이트해야합니다.

외부 전체 텍스트 색인 솔루션을 사용하는 장점은 RDBM의 워크로드를 줄일 수 있다는 것입니다. 문서를 찾으려면 Lucene API를 사용하여 검색을 실행합니다. 결과에는 기본 키 값이 포함 된 필드가 포함되어야합니다 (문서의 일부로 FT 검색을 위해 분석 할 필요는 없습니다). 루센 검색을 할 때이 필드를 되 찾으므로 데이터베이스에서 각 행을 찾을 수 있습니다.

그것이 당신의 질문에 대답하는 데 도움이됩니까?

최근에 MySQL University에서 전체 텍스트 검색 솔루션을 비교 한 프레젠테이션을했습니다.http://forge.mysql.com/wiki/practical_full-text_search_in_mysql

나는 또한 내 슬라이드를 게시합니다 http://www.slideshare.net/billkarwin.

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