2015-05-08 41 views
0

我有一个搜索类,至极有的Zend的Lucene搜索不区分大小写搜索无法正常工作

public function __construct($isNewIndex = false) { 
    setlocale(LC_CTYPE, 'ru_RU.UTF-8'); 

    $analyzer = new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive(); 
    $morphy = new Isi_Search_Lucene_Analysis_TokenFilter_Morphy('ru_RU'); 
    $analyzer->addFilter($morphy); 

    Zend_Search_Lucene_Analysis_Analyzer::setDefault($analyzer); 
    Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8'); 

    //if it's true, then it creates new folder to the path in $_indexFieles; 
    if ($isNewIndex) { 
     $this->_indexes[$this->_key] = Zend_Search_Lucene::create(Yii::getPathOfAlias('application.' . $this->_indexFiles), true); 
    } else { 
     $this->_indexes[$this->_key] = Zend_Search_Lucene::open(Yii::getPathOfAlias('application.' . $this->_indexFiles)); 
    } 
} 

public function find($query, $eventId) 
{ 
    try 
    { 
     Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(Zend_Search_Lucene_Search_QueryParser::B_AND); 
     $query = "($query) AND (event_id:$eventId)"; 
     Zend_Search_Lucene::setResultSetLimit(self::ACCREDITATION_LIMIT); 
     return $this->_indexes[$this->_key]->find("{$query}"); 
    } 
    catch (Zend_Search_Lucene_Search_QueryParserException $e) 
    { 
     echo "Query syntax error: " . $e->getMessage() . "\n"; 
    } 
    catch (Exception $e) 
    { 
     echo $e->getMessage(). "\n"; 
    } 
} 

我有一个纪录名称Test,当我在寻找Test它的工作原理,但无法找到该记录与请​​求test 代码示例:

$s = new Search(); 
$s->find('test', 1232);//no results 

回答

0

我找到了一个解决办法,问题是我是拯救字段(名称等)keyword,我把它改成text,并现在它正在工作完美。

+0

我面临同样的问题,你可以请包括你创建索引的代码? – iamawebgeek