Zend framework Zend搜索Lucene匹配

Zend framework Zend搜索Lucene匹配,zend-framework,search,lucene,zend-search-lucene,Zend Framework,Search,Lucene,Zend Search Lucene,假设我有一个搜索查询,返回一些Zend_search_Lucene_search_QueryHit对象,其中包含与查询匹配的Zend_search_Lucene_文档对象。 我有一个小问题,关于如何从与查询str匹配的文档中检索字段的名称以突出显示它?? 我希望一切都清楚,而不是显而易见的解决:。。。 谢谢 Alex假设姓名、地址、电话是Zend_Search_Lucene_Field::Text类型的字段,并且只有一个字段Zend_Search_Lucene_Field::Unstored c

假设我有一个搜索查询,返回一些Zend_search_Lucene_search_QueryHit对象,其中包含与查询匹配的Zend_search_Lucene_文档对象。 我有一个小问题,关于如何从与查询str匹配的文档中检索字段的名称以突出显示它?? 我希望一切都清楚,而不是显而易见的解决:。。。 谢谢
Alex

假设姓名、地址、电话是Zend_Search_Lucene_Field::Text类型的字段,并且只有一个字段Zend_Search_Lucene_Field::Unstored called content这可以使用strpos轻松解决:

您的电话字段可能是Zend_Search_Lucene_字段::关键字或其他内容。如果前面的字段都没有突出显示,则表示在内容中找到了$query字符串,但该字符串未保存,因为它是Zend_Search_Lucene_Field::Unstored字段。然后,您应该将另一个类型Zend_Search_Lucene_Field::Text Field添加到$doc中,并将其称为摘录

$doc->addField(Zend_Search_Lucene_Field::Text('excerpt', substr($content, 0, 100)));
并将其添加到前面的foreach循环中

if (strpos($hit->excerpt, $query)) {
    $result[$hit->id]['excerpt'] = $query->highlightMatches($hit->excerpt)
  } else {
    $result[$hit->id]['excerpt'] = $hit->excerpt
  }

存在特定的方法:。搜索结果高亮显示感谢提示,但我已经检查了方法。然而,highlightMatches方法需要应用于每个字段或html文档,但我如何从我的点击中直接找出哪个字段包含匹配项?环顾四周,据我所知,如果使用dell的hightlight,您无法知道哪个字段涉及研究!请阅读以下示例:谢谢,为了更清楚,这里是我的问题:假设我正在搜索包含用户数据名称、地址、电话等的用户配置文件目录。。。。作为搜索结果,我有一个命中对象或多或少地对应于一个用户对象。我正在使用此用户对象创建和显示我的目录。因此,当进行搜索时,我希望显示相同的目录,但带有突出显示的字段。换句话说,我需要从我的点击对象中查找并突出显示用户对象中的匹配字段…对不起,我不知道如何完成您的要求!:s
if (strpos($hit->excerpt, $query)) {
    $result[$hit->id]['excerpt'] = $query->highlightMatches($hit->excerpt)
  } else {
    $result[$hit->id]['excerpt'] = $hit->excerpt
  }