Elasticsearch的自动完成和建议组合

时间:2014-05-20 20:00:58

标签: elasticsearch

我正在尝试进行弹性搜索自动完成并建议。我将用于搜索公司名称。它工作正常,但建议只在公司名称的开头执行。 (E.G. Sports Company inc。仅在搜索开始时显示为'sports'而非'company')。我已经读过自动完成是针对前缀的,但我希望它能用于所有单词。

我的问题是如何使用;建议,自动完成,过滤器,令牌化器,让它工作。我知道他们都会对结果产生影响,但是什么有更多,什么有更少。我发现文档很难理解。

我也想知道搜索公司名称与前缀的所有单词的最佳方式。

设定:

{
    "settings" : {
        "analysis" : {
            "char_filter" : {
                "-_to_space" : {
                    "type" : "mapping",
                    "mappings" : [ "-=>", ".=>" ]
                }
            },
            "filter" : {
                "company_stopwords" : {
                    "type" : "stop",
                    "stopwords" : [ "the", "a", "." ]
                }
            },
            "analyzer" : {
                "company_analyzer" : {
                    "type" : "custom",
                    "char_filter" : [ "html_strip", "-_to_space" ],
                    "tokenizer" : "standard",
                    "filter" : [ "lowercase", "company_stopwords" ]
                }
            }
        },
        "number_of_replicas" : 0
    }
}

映射

{
    "properties" : {
        "name" : { 
            "type" : "string"
        },
        "suggest" : {
            "type" : "completion",
            "index_analyzer" : "simple",
            "search_analyzer" : "company_analyzer",
            "payloads" : "true"
        },
        "activated" : { 
            "type" : "integer"
        },
        "banned" : { 
            "type" : "integer"
        },
        "disabled" : { 
            "type" : "integer"
        }
    }
}

0 个答案:

没有答案