ElasticSearch - 模糊搜索 java api 结果不正确

我在 elasticsearch 中索引了示例文档并尝试使用模糊查询进行搜索。但是在使用 Java 模糊查询 api 进行搜索时没有得到任何结果。


请找到我下面的映射脚本:


PUT productcatalog

 {

    "settings": {

        "analysis": {

            "analyzer": {

                "attr_analyzer": {

                    "type": "custom",

                    "tokenizer": "letter",

                    "char_filter": [

                        "html_strip"

                    ],

                    "filter": ["lowercase", "asciifolding", "stemmer_minimal_english"]

                }

            },

            "filter" : {

                "stemmer_minimal_english" : {

                    "type" : "stemmer",

                    "name" : "minimal_english"

                }

            }

        }

    },

    "mappings": {

        "doc": {

            "properties": {

                "values": {

                    "type": "text",

                    "analyzer": "attr_analyzer"

                },

                "catalog_type": {

                    "type": "text"

                },

                "catalog_id":{

                    "type": "long"

                }

            }

        }

    }

}

请找到我的示例数据。


PUT productcatalog/doc/1

{

    "catalog_id" : "343",

    "catalog_type" : "series",

    "values" : "Activa Rooftop, valves, VG3000, VG3000FS, butterfly, ball"

}



PUT productcatalog/doc/2

{

    "catalog_id" : "12717",

    "catalog_type" : "product",

    "values" : "Activa Rooftop, valves"

}

请找到我的搜索脚本:


GET productcatalog/_search

{

    "query": {

        "match" : {

            "values" : {

                "query" : " activa rooftop VG3000",

                "operator" : "and",

                 "boost": 1.0,

                "fuzziness": 2,

                "prefix_length": 0,

                "max_expansions": 100



            }

        }

    }

}


 

慕婉清6462132
浏览 286回答 1
1回答

有只小跳蛙

提到的 java 查询不是match查询。这是一个must查询。你应该使用matchQuery而不是boolQuery().must(QueryBuilders.fuzzyQuery())更新 1:模糊查询是术语查询,而 匹配查询是全文查询。也不要忘记在匹配查询中默认的运算符是or运算符,您应该将其更改为and喜欢您的 dsl 查询。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java