我使用lucene搜索索引器。
它适用于英语,但我在我的网站中使用波斯语并且它不能为这种语言编制索引
例如“سلام”
我将此代码用于创建文档:
public function __construct($class, $key, $title,$contents, $summary, $createdBy, $dateCreated)
{
$this->addField(Zend_Search_Lucene_Field::Keyword('docRef', "$class:$key"));
$this->addField(Zend_Search_Lucene_Field::UnIndexed('class', $class));
$this->addField(Zend_Search_Lucene_Field::UnIndexed('key', $key));
$this->addField(Zend_Search_Lucene_Field::Keyword('title', $title ,'utf-8'));
$this->addField(Zend_Search_Lucene_Field::unStored('contents', $contents , 'UTF-8'));
$this->addField(Zend_Search_Lucene_Field::text('summary', $summary , 'UTF-8'));
$this->addField(Zend_Search_Lucene_Field::Keyword('dateCreated', $dateCreated));
}
答案 0 :(得分:6)
添加此(最佳位置引导程序)
Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ()
);
答案 1 :(得分:1)
我遇到了@afsane报告的同样问题,然后我尝试了@ArneRie提供的解决方案。它确实解决了我的问题,但经过一些测试我发现不需要第一行(至少在我当前的设置中)。
因此,对我有用的解决方案是在创建索引之前显式设置默认分析器:
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive());
$index = Zend_Search_Lucene::create('/path/to/my/index');
在打开查询索引之前,我不需要显式设置默认分析器。