gpt4 book ai didi

laravel - 在查询中过滤(搜索引擎)的最佳方法

转载 作者:行者123 更新时间:2023-12-03 02:26:23 36 4
gpt4 key购买 nike

目前,我有一个汽车品牌列表(本田,丰田,宝马,梅赛德斯·奔驰等)的表格(car_brands),并且我有一个标题,用户可以输入,例如mercedes benz e 230,所以我想输入用户可以通过搜索从car_brands表中获取品牌。对我而言,最好的方法是什么?如何对其进行优化,以使其运行更快并获得更好的结果。

当前代码是

$user_input = 'mercedes benz e 230';
CarBrand::where('name', 'ilike', '%' . $user_input . '%')->first();

enter image description here

以此类推以获取表格结果。

最佳答案

您可以简单地将car_brand定义为关键字,然后在car_brand字段中进行过滤后进行搜索,这将:

  • 根据您的要求减少文档以仅在特定品牌中进行搜索,并且以较少的文档进行搜索,以加快搜索速度。
  • 过滤器缓存在Elasticsearch中,因此下次再次过滤相同的词示例mercedes时,它将从缓存中获取,与再次过滤数据相比,这将是非常快的。

  • 索引定义
    {
    "mappings": {
    "properties": {
    "brand": {
    "type": "keyword" --> note
    },
    "title": {
    "type": "text"
    }
    }
    }
    }

    索引样本文档
    {
    "title" : "mercedes benz e 330",
    "brand" : "mercedes"
    }

    {
    "title" : "fortuner",
    "brand" : "toyota"
    }

    搜索查询
    {
    "query": {
    "bool": {
    "must": [
    {
    "match": {
    "title": "mercedes benz e 330"
    }
    }
    ],
    "filter": [
    {
    "term": {
    "brand": "Mercedes" --> filter `Mercedes` brand and then do search
    }
    }
    ]
    }
    }
    }

    结果
     "hits": [
    {
    "_index": "so_query_car",
    "_type": "_doc",
    "_id": "2",
    "_score": 1.2401118,
    "_source": {
    "title": "mercedes benz e 330",
    "brand": "mercedes"
    }
    }
    ]

    关于laravel - 在查询中过滤(搜索引擎)的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60944308/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com