弹性搜索产品映射

时间:2014-07-06 09:03:12

标签: search elasticsearch search-engine

我想为我的在线购物网站实施一个搜索引擎。我测试了一些分析仪,但我没有看到它们之间的显着差异。我用雪球,ngram,标准分析仪
我不知道哪个分析仪适合的产品名称并给我最好的结果,我也不知道我应该使用哪个搜索查询 这是我的映射架构

{
    "settings": {
        "analysis": {
            "analyzer": {
                "autocomplete": {
                    "type": "custom",
                    "tokenizer": "standard",
                    "filter": ["standard", "lowercase", "stop", "kstem", "ngram"]
                }
            }
        }
    }
    ,
    "mappings": {
        "products": {
            "properties": {
                "id": {
                    "type": "integer",
                    "index": "no"
                },
                "name": {
                    "type": "multi_field",
                    "fields": {
                        "name": {
                            "type": "string"
                        },
                        "snowball": {
                            "type": "string",
                            "analyzer": "snowball"
                        },
                        "autocomplete": {
                            "analyzer": "autocomplete",
                            "type": "string"
                        }
                    }
                }
            }
        }
}

和搜索查询,我不知道使用匹配查询对我的用例是好还是

{
        "query": {
            "multi_match": {
                "fuzziness":2,
                "type" : "phrase",
                "query": "term",
                "fields": ["name", "name.snowball",
                    "name.autocomplete"]
                }
        }
}

1 个答案:

答案 0 :(得分:0)

使用Analyze API查看Lucene索引中为您使用的不同分析器生成的令牌。查询'term'不是一个很好的测试例子,使用更长的东西。

您的搜索有哪些要求?

不要使用多匹配查询来测试结果,在单个搜索中测试分析器。

curl -XGET 'http://localhost:9200/yourindex/_search?q=name:yourSearchTerm'

curl -XGET 'http://localhost:9200/yourindex/_search?q=name.snowball:yourSearchTerm'

curl -XGET 'http://localhost:9200/yourindex/_search?q=name.autocomplete:yourSearchTerm'

对于自动填充功能,请查看Completion Suggesster API

此外,Snowball干扰器非常具有侵略性并且可能产生不良结果,您可能需要使用更轻的干扰器。