【问题标题】:invalid characters for lucene text searchlucene 文本搜索的无效字符
【发布时间】:2011-01-18 10:44:05
【问题描述】:

在我的 IndexController 我有

    public function buildAction()
    {

    $index = Zend_Search_Lucene::create(APPLICATION_PATH . '/indexes');     

    foreach ($this->pages as $p) {
        $doc = new Zend_Search_Lucene_Document();

        $doc->addField(Zend_Search_Lucene_Field::unIndexed('page_id', $p['page_id']));

        $doc->addField(Zend_Search_Lucene_Field::text('page_name', $p['page_name']));

        $doc->addField(Zend_Search_Lucene_Field::text('page_headline', $p['page_headline']));

        $doc->addField(Zend_Search_Lucene_Field::text('page_content', $p['page_content']));


        $index->addDocument($doc);
    }
    $index->optimize();
    $this->view->indexSize = $index->numDocs();
    }

我遇到了错误

[Tue Jan 18 16:23:32 2011] [error] [client 127.0.0.1] PHP Notice:  iconv(): Detected an illegal character in input string in /usr/share/php/libzend-framework-php/Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php on line 58
[Tue Jan 18 16:23:32 2011] [error] [client 127.0.0.1] PHP Notice:  iconv(): Detected an illegal character in input string in /usr/share/php/libzend-framework-php/Zend/Search/Lucene/Field.php on line 222
[Tue Jan 18 16:23:32 2011] [error] [client 127.0.0.1] PHP Notice:  iconv(): Detected an illegal character in input string in /usr/share/php/libzend-framework-php/Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php on line 58
[Tue Jan 18 16:23:32 2011] [error] [client 127.0.0.1] PHP Notice:  iconv(): Detected an illegal character in input string in /usr/share/php/libzend-framework-php/Zend/Search/Lucene/Field.php on line 222
[Tue Jan 18 16:23:32 2011] [error] [client 127.0.0.1] PHP Notice:  iconv(): Detected an illegal character in input string in /usr/share/php/libzend-framework-php/Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php on line 58
[Tue Jan 18 16:23:32 2011] [error] [client 127.0.0.1] PHP Notice:  iconv(): Detected an illegal character in input string in /usr/share/php/libzend-framework-php/Zend/Search/Lucene/Field.php on line 222

和变量

$this->pages

包含从维基百科复制的文本数组,我收到错误的字符 - (不是 -)和我收到错误的 ö(我相信)。我在Lucene foreign chars problem 得到了相关的类似问题,它没有解释在哪里做什么。如果我知道在哪里做什么以及一点解释,我将不胜感激

更新::iconv

 iconv support          enabled
 iconv implementation   glibc
 iconv library version  2.12.1 

【问题讨论】:

  • 你能从phpinfo()查看你使用的是哪个版本的iconv吗?
  • @Randell 请查看更新
  • 正如我所怀疑的那样。我现在遇到同样的问题。 Zend Lucene 在 Mac OS X 和 Windows XP 上运行良好,其中 iconv 实现在 libiconv 而不是 glibc 中。我也不知道解决办法。
  • 所以是 linux 给我带来了问题?

标签: zend-framework zend-search-lucene lucene


【解决方案1】:

尝试将此添加到您的引导程序中:

Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
    new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ()
);

【讨论】:

  • 是的,非常感谢。这为我摆脱了同样的错误。非常感谢。
【解决方案2】:

除了在引导代码中为基于文本的索引添加第三个参数编码

$doc->addField(Zend_Search_Lucene_Field::text('page_name', $p['page_name'], 'UTF-8'));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多