2012-11-23 4 views
1

두 가지 접근법을 사용하여 색인을 검색 중입니다. 하나는 작동 중이지만 하나는 그렇지 않습니다 (그러나 설명서를 읽은 상태 여야합니다). 나는 내 실수가 무엇인지 궁금합니다.Zend_Lucene : 여러 용어를 결합하는 방법은 무엇입니까?

$query = '+language:EN +country:US'; 
$hits = $index->find($query); 

내가 Zend_Search_Lucene_Index_Term를 사용하여 동일한 작업을 수행하려고 :

$query = new Zend_Search_Lucene_Search_Query_MultiTerm(); 
$query->addTerm(new Zend_Search_Lucene_Index_Term('EN', 'language'), true); 
$query->addTerm(new Zend_Search_Lucene_Index_Term('US', 'country'), true); 
$hits = $index->find($query); 

이 결과를 생성하지 않습니다

은 여기에 잘 작동 나의 첫 번째 방법입니다. true 옵션을 제거하면 검색이 OR 검색 (country = US OR language = EN)으로 변환됩니다.

는 내가 검색의 모든 대문자를 사용하지 않음으로써 해결책을 발견 http://framework.zend.com/manual/1.12/de/zend.search.lucene.query-api.html

+0

대소 문자를 구분했는지 확인 했습니까? –

+0

예, 방금 두 번 확인했습니다. 그것은 모든 전선에서 동일합니다 :) – favo

답변

0

에서 발견 된 문서에 두 번째 방법의 생성을 기반으로.

데이터 필드가 대문자 인 경우에도 소문자를 검색하면 해결됩니다.

예 번호 :

$query = new Zend_Search_Lucene_Search_Query_MultiTerm(); 
$query->addTerm(new Zend_Search_Lucene_Index_Term('en', 'language'), true); 
$query->addTerm(new Zend_Search_Lucene_Index_Term('us', 'country'), true); 
$hits = $index->find($query); 

데이터 필드가 값 "EN"및 "US"를 가지며 같은 색인하고 문서 출력이 확인되지만 검색하는 소문자 입력이 필요 몇몇 이유.

관련 문제