php - FOSElastica bundle : retrieving highlights for results

标签 php search elasticsearch highlighting foselasticabundle

我试图通过全局索引搜索返回突出显示 FOSElastica Bundle .

我的配置(yml 文件)中有一个全局索引查找器:

fos_elastica:
  clients:
    default: { host: %elastic_host%, port: %elastic_port% }
  indexes:
    myIndex:
      client: default
      finder: ~
      types: 
       # different types here

我按照文档使用它(here):

$finder = $this->container->get('fos_elastica.finder.myIndex');

// Returns a mixed array of any objects mapped
$results = $finder->find('whatever');

效果完美并返回预期结果。 现在我想使用 ES 的快速矢量荧光笔突出显示结果中找到的单词。但我没有找到任何示例或任何文档来这样做。

我想我需要定义一个更合适的\Query 对象,例如:

$query = new \Elastica\Query();
$query->setHighlights(array("whatever"));
$query->setTerm("whatever");

$results = $finder->find($query);

但是我找不到任何信息。有什么提示吗?

非常感谢!!

最佳答案

首先用 JSON 编写查询:

{
    "query" : {
        "match" : {
            "content" : "this is a test"
        }
    },
    "highlight" : {
        "fields" : {
            "content" : {}
        }
    }
}

当它起作用时,转换为 Elastica:

$matchQuery = new \Elastica\Query\Match();
$matchQuery->setField('content', 'this is a test');

$searchQuery = new \Elastica\Query();
$searchQuery->setQuery($matchQuery);

$searchQuery->setHighlight(array(
    "fields" => array("content" => new \stdObject())
));

关于php - FOSElastica bundle : retrieving highlights for results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24340385/

相关文章:

php - 从MySQL表中获取第二大标记

php - 如何从 php 函数进行自动 javascript 函数调用?

json - 将大型GEOJson上传到弹性

java - 如何在ES API Java中创建多重索引

c# - 存储库模式是如何真正完成的?

php - 将插入查询从 sql 文件转换为 php 数组

javascript - 如何根据查询结果 "highlight"一个div?

php - 使用ElasticSearch匹配多个文档

java - 在 arraylist 中查找重复值

python - 在Python中计算出现次数并忽略某些出现次数