gpt4 book ai didi

elasticsearch - 单词开头的Elasticsearch multi_match

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

我有一个小问题,我开始使用Elasticsearch,并在使用curl脚本测试时遇到了这个问题。

curl -XGET 'localhost:9200/fcomputer/products/_search?pretty' -d'
{
"query" : {
"multi_match" : {
"query" : "sams evo",
"fields": ["title", "fulltext"]
}
}
}'

在所有内容包含或以sams和evo开头之后,我尝试执行其搜索操作,但我不关心大小写敏感。

现在看来,当我键入内容时,它是正确的词,并且在sams和evo上使用一种“或”。

有没有一种简单的方法可以对查询说:
  • 在字段中搜索:标题和全文
  • 如果您发现某字段中的某项匹配,则在(开始)或(100%匹配)后匹配两个单词(sams&evo)匹配
  • 在搜索中返回所有有效数据。

  • 我一直在寻找与此标题匹配的作品:
  • 三星950 PRO MZ-V5P256BW-固态驱动器-256 GB-PCI Express 3.0 x4(NVMe
  • 华硕GTX950-2G grafikkort-GF GTX 950-2 G
  • 华硕GTX950-OC-2GD5 grafikkort-GF GTX 950-2 GB
  • Zebra Z-Ultimate 5A-永久性空白聚酯胶带-950 stk。
  • 京瓷TK 950-排序-原装-墨粉赞助商

  • 如果我使用搜索词“Samsung 950”,则此处唯一匹配的是(Samsung 950 PRO),但它不起作用。

    最佳答案

    试试这个

    {
    "query": {
    "multi_match": {
    "query": "sam evo",
    "type": "cross_fields",
    "operator": "and",
    "fields": [
    "title",
    "fulltext"
    ]
    }
    }
    }

    使用此设置
    {
    "settings": {
    "analysis": {
    "filter": {
    "autocomplete_filter": {
    "type": "edge_ngram",
    "min_gram": 1,
    "max_gram": 20
    }
    },
    "analyzer": {
    "autocomplete": {
    "type": "custom",
    "tokenizer": "standard",
    "filter": [
    "lowercase",
    "autocomplete_filter"
    ]
    }
    }
    }
    }
    }

    和映射
    {
    "properties": {
    "title": {
    "type": "string",
    "analyzer": "autocomplete",
    "search_analyzer": "standard"
    },
    "fulltext": {
    "type": "string",
    "analyzer": "autocomplete",
    "search_analyzer": "standard"
    }
    }
    }

    关于elasticsearch - 单词开头的Elasticsearch multi_match,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39510522/

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