【问题标题】:Stemming in elastic search replacing the original string弹性搜索中的词干替换原始字符串
【发布时间】:2017-10-06 15:56:30
【问题描述】:

我使用以下设置创建 ES 索引。

"settings": {
    "analysis" : {
        "analyzer" : {
            "my_analyzer" : {
                "tokenizer" : "standard",
                "filter" : ["standard", "lowercase", "my_stemmer"]
            }
        },
        "filter" : {
            "my_stemmer" : {
                "type" : "stemmer",
                "name" : "english"
            }
        }
    }
}

我注意到,在分析词干分析器时,会用词干词替换原始字符串。有没有办法同时索引原始字符串和词干标记?

【问题讨论】:

    标签: elasticsearch tokenize analyzer elasticsearch-5 stemming


    【解决方案1】:

    您的问题是关于stemmer token filter 的“preserve_original”参数:

    您会找到“preserve_original”,例如用于Word Delimiter Token Filter,但不适用于词干过滤器。

    如果您需要原始单词,例如对于聚合,您可以使用合适的分析器将字段 copy 到另一个字段。

    如果您需要将原件放在索引的同一位置,则必须包装词干分析器并构建自己的分析器,如 plugin

    【讨论】:

    • 这有点旧,但感谢您的回答,标记化和原始的单独字段很有意义。如果您看到此内容,请进行跟进。我可能会误解,但您似乎暗示您不应该需要原始单词(聚合或其他用途除外),但您为什么不想要原始单词用于搜索目的?如果最初的术语是“strawberries”,它被提取为“strawberry”,那么搜索“strawberries”应该会产生结果。我对弹性相当陌生,所以我担心我在搜索实现中遗漏了一些东西。谢谢!
    • 嗨 bryan60,您想在词干词上下文中搜索原始词的示例:搜索一个词组,其中一个词是名称(人名或城市或..)。您不需要使用词干分析器在名称中搜索什么,但您喜欢在短语的其余部分使用词干分析器。
    猜你喜欢
    • 2012-07-11
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多