2012-06-28 2 views
0

나는 쿼리 문과 일치하는 데 Zend Lucene을 사용하려하지만 퍼지 일치를 원합니다. 내가 PhraseQuery을 사용하고 "발렌틴 로시"을 검색하는 경우 PhraseQuery 정확히 문자열 "발렌틴 로시"를 검색하기 때문에하지 않고, 나는 결과가 없습니다 (그리고 DB에 "발렌티노"이) 순간Lucene Zend 단일 단어 대신 구문에 일치

, 단어 사이 퍼지 매칭 또는 유사성.

제게 해결책을 찾아야 할 힌트를주십시오. 미리 감사드립니다! 당신이 젠드 루씬을 사용하는 경우

+0

'를 DB에 .. 그리고는 "발렌티노"가있다'고 말했다보다는 - 그래서이다 당신은 DB 또는 Zend Lucene을 사용합니까 ??? – tasmaniski

답변

0

그렇게, 검색 할 텍스트를 준비해야합니다 등등

$texttosearch = 'valentin rossi'; 
$query = Zend_Search_Lucene_Search_QueryParser::parse($texttosearch); 

//you can echo $query to see result 
echo $query; 

및 ... Zend_Search_Lucene

0

이 좋은 책에서

봐 Lucene PhraseQuery는 와일드 카드 및 퍼지 쿼리를 지원하지 않습니다. 나는 Zend Lucene에 대해 많이 모른다. lucene에서는 ComplexPhraseQueryParser를 사용하여 퍼지 또는 와일드 카드로 구문 검색을 수행 할 수 있습니다. 내부적으로 SpanQueries를 사용합니다. ComplexPhraseQueryParser 또는 SpanQueries를 Zend와 함께 사용할 수 있으면 좋을 것입니다.

2

젠드 루씬은 퍼지 검색을 지원하는 것으로 보입니다. 문서는 here입니다.

당신은 같은 것을 할 필요가 : 나는 거의 당신이 젠드 루씬을 사용하고 있다고 말했다 혼란 스러워요

$queryString = 'search terms here'; 
//add the '~' to make it fuzzy if there is a query string 
$queryString = $queryString ? $queryString . '~' : $queryString; 
$index = Zend_Search_Lucene::open('/path/to/index'); 
$results = $this->_index->find(queryString);