如何使用 Laravel Scout 在 Elasticsearch 中设置 track_total_hits?

问题描述 投票:0回答:3

我一直在使用 https://github.com/babenkoivan/scout-elasticsearch-driver 并且我希望将“track_total_hits”设置为 true,以便我可以获得总结果。

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html#request-body-search-track-total-hits

我不确定如何获取该点的数组值?

谢谢。

laravel elasticsearch laravel-scout
3个回答
1
投票

您使用的包没有实现

track_total_hits
(对存储库内容的搜索将确认这一点)。但是,如果需要,您可以分叉存储库并自行添加功能。


0
投票

我遇到了同样的问题,为了解决这个问题,我使用回调闭包创建了自己的实现来包含

track_total_hits
等等……。

1.延长
SearchRequestFactory

use ElasticScoutDriver\Factories\SearchRequestFactory;
use ElasticAdapter\Search\SearchRequest;
use Laravel\Scout\Builder;

class ElasticSearchRequestFactory extends SearchRequestFactory
{
    public function makeFromBuilder(Builder $builder, array $options = []): SearchRequest
    {
        $searchRequest = parent::makeFromBuilder($builder, $options);

        if ($builder->callback) {
            call_user_func($builder->callback, $searchRequest, $builder);
        }

        return $searchRequest;
    }
}

2.在
AppServiceProvider

中注册扩展的 SearchRequestFactory
public function register()
{
    $this->app->bind(SearchRequestFactoryInterface::class, ElasticSearchRequestFactory::class, true);
}

3.使用
SearchRequest

设置值
use ElasticAdapter\Search\SearchRequest;

//... more code

$results = Model::search($query, function(SearchRequest $request) {
    $request->trackTotalHits(true);
    return $request;
})->paginate();

//... more code

文档和参考:


0
投票

我有同样的问题,问题是

  • 安装 jeroeng/explorer 库

  • 使用特定选项进行查询

    使用 JeroenG\Explorer\Domain\Query\QueryProperties\TrackTotalHits;

    模型::搜索($搜索) ->属性(TrackTotalHits::all());

© www.soinside.com 2019 - 2024. All rights reserved.