2009-04-01 15 views
3

Zend_Search_Lucene을 사용하여 사이트 검색을 구현하고 있습니다. 여러 데이터 유형 (예 : 사용자, 게시물 등)에 대해 별도의 색인을 만들었습니다. 결과는 데이터 유형에 따라 비슷하게 나뉘지만 '모든'옵션이있어 서로 다른 결과 유형을 조합하여 표시해야합니다. 다른 색인을 한 번에 검색 할 수 있습니까? 또는 모든 색인의 모든 것을 색인화해야합니까?Lucene을 사용하여 여러 인덱스를 즉시 검색합니다. 검색

업데이트 : ZF 1.8 용 readme은 이제 ZF 1.8에서 가능할 수 있지만 설명서의 위치를 ​​추적 할 수 없었습니다.

답변

7

그래서 연구를 한 후 Zend_Search_Lucene_Interface_MultiSearcher를 사용해야합니다. 나는이 글을 쓰는 현재의 문서에 대한 언급이 표시되지 않습니다하지만 당신은 ZF 1.8의 실제 클래스를 보면 그것이 그렇게 won'w PEAR 구문을 따르지 않는 간단한 t 사용

$index = new Zend_Search_Lucene_Interface_MultiSearcher(); 
$index->addIndex(Zend_Search_Lucene::open('search/index1')); 
$index->addIndex(Zend_Search_Lucene::open('search/index2')); 
$index->find('someSearchQuery'); 

NB이다 Zend_Loader :: loadClass와 함께 작업하십시오.

+0

어떻게이 클래스를로드 할 수 있습니까? – Druckles

2

저는 Zend와 어떻게 통합되지 않지만 Lucene에서는 일반적인 IndexSearcher 대신 MultiSearcher을 사용합니다.

+0

내 검색에서이 링크를 찾았지만 Zend 솔루션을 찾고 있습니다. 이 일을 할 수 있다는 것을 확인했기 때문에 고마워. – Akeem

3

정확히 내가 huddler.com에 대한 검색을 처리 한 방법입니다. 한 Zend_Search_Lucene 인덱스를 여러 데이터 형식 당 하나씩 사용했습니다. "all"옵션의 경우 모든 인덱스의 모든 것을 포함하는 다른 인덱스가 있었을뿐입니다. 따라서 인덱스에 문서를 추가 할 때 두 번, 적절한 "유형"인덱스에 한 번, "모두" "색인. 젠드 루씬 (Zend Lucene)은 다른 루씬 (Lucene) 구현물에 비해 심각하게 못 미쳤다. 그래서 이것이 내가 찾은 최고의 해결책이었다. Zend의 포트는 lucene 쿼리 구문의 하위 집합 만 지원하며 중간 색인 (10-100 MB), "a *"와 같은 간단한 쿼리 또는 인용 구문이 제대로 수행되지 않는 경우 (if 조금도).

큰 사이트를 우리 플랫폼에 가져 왔을 때 Zend Lucene은 확장되지 않음을 발견했습니다. 우리의 색인은 대략 1.0 GB에 이르렀으며 간단한 쿼리는 15 초가 걸렸습니다. 일부 쿼리에 1 분 이상 소요되었습니다. 인덱스를 처음부터 구축하는 데는 약 20 시간이 걸렸습니다.

나는 Solr로 전환했다. Solr은 색인 생성 중에 50 배, 그리고 많은 쿼리에서 1000 배 빠릅니다 (대부분의 쿼리는 < 5ms로 끝나며 모두 < 100ms로 끝납니다). 훨씬 더 강력합니다. 또한 30 분 만에 100,000 개 이상의 문서 색인을 처음부터 다시 작성할 수있었습니다 (20 시간에서 감소).

이제 모든 것이 "유형"필드가있는 하나의 Solr 색인에 있습니다. 나는 각각의 검색에 대한 인덱스에 대해 각각 다른 "유형 :"필터 쿼리가있는 쿼리와 "모든"옵션의 "유형 :"이없는 쿼리를 여러 번 실행합니다.

인덱스를 100MB 이상으로 늘리려면 분당 검색 요청을 최소한 받거나 고급 검색 기능을 제공하려면 Zend_Search_Lucene을 포기하는 것이 좋습니다.

+1

다행스럽게도 내가 한 일을 끝내기 위해서 (타입 필드를 사용하여 하나의 인덱스를 사용했다). Solr에 대한 팁을 주셔서 감사합니다. Zend_Lucene을 구현 한 세 번째 시간이고 만족하지 못했기 때문에 체크 아웃 할 것입니다. – Akeem

+1

이 질문에 대한 답변으로 표시했지만 새로운 버전의 ZF 1.8에서는 문서에서 찾을 수 없었지만 여러 색인을 검색 할 수 있다고 주장합니다. (Solr은 우리가 작성한 많은 것들과 큰 차이가있는 것처럼 보였습니다. 관심이 있었지만 먼저 프로젝트에 대해 생각해야했습니다.) – Akeem