Zend_Lucene:如何组合多个术语?

时间:2012-11-23 13:00:35

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

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

这是我的第一种方法,它可以正常工作:

$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搜索(country = US OR language = EN)。

我基于http://framework.zend.com/manual/1.12/de/zend.search.lucene.query-api.html

上的文档创建了第二种方法

1 个答案:

答案 0 :(得分: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”,并且已经被索引,文档输出确认了这一点,但由于某种原因,搜索需要小写输入。