gpt4 book ai didi

search - 实现搜索 : Identifying known keywords

转载 作者:行者123 更新时间:2023-12-03 01:58:40 25 4
gpt4 key购买 nike

我已经使用 Elasticsearch 为我的电子商务网站实现了搜索功能。基本结构就像,每个产品都有一个标题,无论用户输入什么,我都使用 Elasticsearch 确切的字符串并返回结果。

现在我注意到大多数搜索短语(几乎 90%)都遵循类似的模式。它包含:

  • 产品品牌名称(苹果、诺基亚等)
  • 产品类别(手机、手机、智能手机等)
  • 产品型号(iPhone 6S、Lumia 950等)

  • 现在我想如果我能够识别特定的组件,那么我可以返回比文本匹配更好的结果。

    我有品牌、类别和型号的列表。如果我能够识别存在的术语,那么我可以专门使用该字段请求 Elasticsearch
    比如“Apple iPhone 5S”的搜索字符串,我应该可以推断出那个brand=Apple。

    编辑 :评论中询问的更多细节

    文件结构:

    我有一个索引,每个文档 ID 都是产品的 SKU,它包含以下字段
  • 标题(苹果 iPhone 5S)
  • 品牌(苹果)
  • 类别(电子)
  • 子类别(智能手机)
  • 型号(iPhone 5S)
  • 属性(每个子类别特有的产品属性字典,例如 {"color": "gold", "memory": "32 GB", "battery": "1570 mAh"})
  • 价格

  • 用例:

    现在当用户搜索短语“iphone 5s battery”时,elastic 会返回搜索结果,甚至返回手机。 (我同意电池的相关性得分更匹配)

    我想要实现的是,我有子类别的主列表。因此,如果主列表中存在搜索短语中的任何单词,那么我将使用查询 ["must": {"sub_categ": "battery"}] 在 elasticsearch 上进行搜索。因此“智能手机”子类别的结果不会从弹性中获取。我希望在品牌、类别等多个领域复制这一点

    我的问题是,如果品牌或任何其他特定词出现在搜索短语中,我如何快速找到主列表中的品牌或任何其他特定词?我能想到的唯一选择是遍历主列表并检查搜索短语中是否存在该单词。如果存在,请记下它并在所有主列表字段(品牌、类别、子类别)中执行相同操作。然后使用 must 生成查询,然后查询它们。我想知道是否有更好的方法来完成它。

    最佳答案

    Lucene 世界中在这个话题上发言最多的人是 Ted Sullivan。 (他称之为“自动过滤”,并有 a component which does this available for Solr )

    我意识到您正在使用 Elasticsearch,但 Ted 的组件通过内省(introspection) FieldCache 数据(由 Lucene 公开)来工作,因此应该可以使用 Elasticsearch 实现非常相似的东西(查看代码)。

    this article中也有讨论关于如何创建一个单独的索引来提供您所描述的预查询智能(例如,您的术语“Apple”最常出现在 company 字段中)。

    关于search - 实现搜索 : Identifying known keywords,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34657751/

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