【问题标题】:Zend Search Lucene case insensitive search doesn't workZend Search Lucene 不区分大小写的搜索不起作用
【发布时间】:2015-05-08 11:50:14
【问题描述】:

我有一个 Search 类,它有

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

【问题讨论】:

    标签: php lucene zend-search-lucene


    【解决方案1】:

    我找到了解决方案,问题是我将字段(名称等)保存为keyword,我将其更改为text,现在它运行良好。

    【讨论】:

    • 我也遇到了同样的问题,能否请您包含创建索引的代码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 2012-08-17
    • 1970-01-01
    • 2010-09-15
    • 2023-01-31
    相关资源
    最近更新 更多