elasticsearch - 如何在Elasticsearch中找到与我的搜索字段相关的相关记录

标签 elasticsearch

在Elasticsearch中,我想找到与我的搜索 Realm 相关的相关记录,例如stackoverflow相关的问题建议,这意味着匹配彼此相近的搜索结果。
例如,我从以下数据中搜索“男鞋”

  • “男鞋”
  • “女鞋”
  • “男鞋黑色”
  • “女鞋”
  • “女鞋粉红色”
  • “女鞋红色”
  • “男孩的鞋子”
  • “男鞋灰色”
  • “男鞋白色”
  • “男鞋绿色”
  • “男式鞋”

  • 然后,如何通过搜索项目“男鞋”获得更多相关的元组?并且我如何也可以获取与同义词相关的数据。男士鞋类。
    在Kibana中批量插入
    POST /atomap/product/_bulk
    {"index":{"_id":"1"}}
    {"name": "Girl's Shoe"}
    {"index":{"_id":"2"}}
    {"name": "Men's Shoe"}
    {"index":{"_id":"3"}}
    {"name": "Women's Shoe"}
    {"index":{"_id":"4"}}       
    {"name": "Women's Shoe pink color"}
    {"index":{"_id":"5"}}
    {"name": "Women's Shoe red color"}
    {"index":{"_id":"6"}}
    {"name": "Boy's Shoe"}
    {"index":{"_id":"7"}}
    {"name": "Men's Shoe red color"}
    {"index":{"_id":"8"}}
    {"name": "Men's Shoe white color"}
    {"index":{"_id":"9"}}
    {"name": "Men's Shoe green color"}
    {"index":{"_id":"10"}}
    {"name": "Men's Shoe gray color"}
    {"index":{"_id":"11"}}
    {"name": "Men's footwear"}
    
    我已经尝试过more like this查询:
    GET /atomap/product/_search
    {
      "query": {
        "more_like_this": {
            "like": "Men's shoe",
            "min_term_freq": 1,
            "min_doc_freq": 1
         }
       }
    }
    
    我的问题是。如何搜索相关单词? 因为当我搜索“男鞋”时More Like This Query在顶部找不到“男鞋”。

    最佳答案

    创建同义词和字段映射:

    PUT /atomap
    {
      "settings": {
        "analysis": {
          "filter": {
            "my_synonym_filter": {
              "type": "synonym", 
              "synonyms": [ 
                "shoe,footwear",
                "color,colour"
              ]
            }
          },
          "analyzer": {
            "my_synonyms": {
              "tokenizer": "standard",
              "filter": [
                "lowercase",
                "my_synonym_filter" 
              ]
            }
          }
        }
      },
      "mappings":{
    
      "product" : {
         "properties" : {
            "name" : {
               "type" : "string",
               "analyzer" : "my_synonyms"
            }
         }
      }
    
      }
    }
    

    然后插入所有数据,然后运行以下查询:
    POST /myshop/_search
    {
        "query": {
            "query_string": {
                "default_field": "name",
                "query": "Men's shoe",
                "analyzer": "my_synonyms"
            }
        }
    }
    

    关于elasticsearch - 如何在Elasticsearch中找到与我的搜索字段相关的相关记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43022729/

    相关文章:

    linux - docker错误elasticsearch镜像无法使用安装文件提供的参数访问

    java - 如何向 Elastic Transport Client 添加身份验证

    elasticsearch - 设置scaling_factor参数时出现奇怪的行为

    elasticsearch - 如何将每个文档的计数乘以其中的值?

    elasticsearch - 过滤Elasticsearch字词查询

    elasticsearch - 如何计算分数(别名字段的长度)

    javascript - Elasticsearch - 按名称过滤和排序,优先级异常(exception)

    php - elasticsearch使用php API获取索引中的文档总数

    elasticsearch - Apache Nifi使用_Parent将数据放入ElasticSearch

    python - ElasticSearch,将值附加到字段,但检查字段是否首先存在,如果不存在,则附加字段