php - Zend Search MultiTerm 查询没有命中? (应该有3个)

标签 php symfony zend-search-lucene

我有一个搜索表单,其中包含名称、俱乐部、natranking、doublesranking 和俱乐部字段。我从选择框中选择了一个俱乐部,将名称字段留空并单击“搜索”。结果没有命中。应该有 3 个,因为数据库中有 3 个记录是所选俱乐部的一部分。这是为什么?

谢谢。

Controller 类:

$search = $this->get('ewz_search.lucene');

// Create query
$terms = array(new Term($form->getData()->getName(), 'name'),
    new Term($form->getData()->getClub(), 'club'),
    new Term($form->getData()->getNatRanking(), 'natranking'),
    new Term($form->getData()->getNatDoublesRanking(), 'doublesranking')
);
$signs = array(TRUE, TRUE, TRUE, TRUE);
$query = new MultiTerm($terms, $signs);

// Get results 
$results = $search->find($query);

// Echo prints: "+name: +club:A.R.A. LA GANTOISE +natranking: +doublesranking:"
echo $query;

// This returns 0
die("debug: " . count($results);

//编辑

这有效(给我 3 个结果):

$manual_query = "+name: +club:A.R.A. LA GANTOISE +natranking: +doublesranking:";

最佳答案

我将 Multiterm 对象转换为字符串,现在它可以工作了。 这很奇怪,因为文档中的示例清楚地表明它应该可以在不将其转换为字符串的情况下工作:

来自文档的示例 (http://framework.zend.com/manual/en/zend.search.lucene.query-api.html#zend.search.lucene.queries.multiterm-query)

$query = new Zend_Search_Lucene_Search_Query_MultiTerm();

$query->addTerm(new Zend_Search_Lucene_Index_Term('word1'), true);
$query->addTerm(new Zend_Search_Lucene_Index_Term('word2', 'author'),
            null);
$query->addTerm(new Zend_Search_Lucene_Index_Term('word3'), false);

$hits  = $index->find($query);

关于php - Zend Search MultiTerm 查询没有命中? (应该有3个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10774118/

相关文章:

php - Zend_Search_Lucene 的替代品?

php - mysql数据的文本搜索技术

php - 为超过 350,000 名用户计算 "ranks"的有效方法

php - Symfony 2.8 app no style 加载资源失败

php - zend 搜索 lucene 查询 api : boosting a term

php - 更新双向多对多关系的正确方法 symfony2-doctrine

forms - symfony 表单如何在 View 中呈现

php - yii2 分页不起作用

php - 从表1中获取id与表2匹配

phpspreadsheet setCellValue 没有写