1

我正在使用两种不同的方法在索引中搜索,一种有效,一种无效(但应该来自阅读文档)。我想知道我的错误是什么。

这是我的第一种方法,效果很好:

$query = '+language:EN +country:US';
$hits = $index->find($query);

我尝试使用以下方法做同样的事情Zend_Search_Lucene_Index_Term

$query = new Zend_Search_Lucene_Search_Query_MultiTerm();
$query->addTerm(new Zend_Search_Lucene_Index_Term('EN', 'language'), true);
$query->addTerm(new Zend_Search_Lucene_Index_Term('US', 'country'), true);
$hits  = $index->find($query);

这不会产生结果。删除该true选项会将搜索转换为 OR 搜索(国家/地区=US OR 语言=EN)。

我基于http://framework.zend.com/manual/1.12/de/zend.search.lucene.query-api.html上的文档创建了第二种方法

4

1 回答 1

0

我通过在搜索中不使用任何大写字符找到了解决方案。

搜索小写字符,即使数据字段是大写的,也解决了。

有效的示例代码:

$query = new Zend_Search_Lucene_Search_Query_MultiTerm();
$query->addTerm(new Zend_Search_Lucene_Index_Term('en', 'language'), true);
$query->addTerm(new Zend_Search_Lucene_Index_Term('us', 'country'), true);
$hits  = $index->find($query);

数据字段具有值“EN”和“US”,并已被索引,文档输出证实了这一点,但由于某种原因,搜索需要小写输入。

于 2012-11-27T20:07:20.583 回答