【问题标题】:How to view the analyzed text when a custom analyzer was used?使用自定义分析器时如何查看分析的文本?
【发布时间】:2018-05-14 18:06:46
【问题描述】:

我不知道如何测试我的自定义分析器/查看分析的数据。

通常我会在创建索引时将自定义分析器添加到“索引设置”中。在这种情况下我遇到的问题是我没有使用索引,或者至少我认为我没有使用并且我不知道如何将我的自定义分析器添加到 Elasticsearch 客户端?

这是我目前用于测试“分析”部分的方法:

public async Task AnalizeField(string analyzer, string textToAnalyze)
{
    var elasticClient = ElasticsearchHelper.DatabaseConnection();

    var analyzeResponse = await elasticClient.AnalyzeAsync(a => a
            .Analyzer(analyzer)
            .Text(textToAnalyze)
        );

    var result = "";

    if (analyzeResponse != null && analyzeResponse.Tokens.Count > 0)
    {
        foreach (var token in analyzeResponse.Tokens)
        {
            result += token.Token + " ";
        }

    }

    Console.WriteLine("Analyzing text \"" + textToAnalyze + "\" using the \"" + analyzer + "\" analyzer: " + result);
}

【问题讨论】:

    标签: elasticsearch nest


    【解决方案1】:

    找到它:https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/testing-analyzers.html#_testing_a_custom_analyzer_in_an_index

    在索引中测试自定义分析器

    在此示例中,我们将向现有索引添加自定义分析器。首先,我们需要关闭索引

    client.CloseIndex("analysis-index");
    

    现在,我们可以更新设置以添加分析器

    client.UpdateIndexSettings("analysis-index", i => i
        .IndexSettings(s => s
            .Analysis(a => a
                .CharFilters(cf => cf
                    .Mapping("my_char_filter", m => m
                        .Mappings("F# => FSharp")
                    )
                )
                .TokenFilters(tf => tf
                    .Synonym("my_synonym", sf => sf
                        .Synonyms("superior, great")
    
                    )
                )
                .Analyzers(an => an
                    .Custom("my_analyzer", ca => ca
                        .Tokenizer("standard")
                        .CharFilters("my_char_filter")
                        .Filters("lowercase", "stop", "my_synonym")
                    )
                )
    
            )
        )
    );
    

    然后再次打开索引。在这里,我们也最多等待 5 秒,让索引的状态变为绿色

    client.OpenIndex("analysis-index");
    client.ClusterHealth(h => h
        .WaitForStatus(WaitForStatus.Green)
        .Index("analysis-index")
        .Timeout(TimeSpan.FromSeconds(5))
    );
    

    索引打开并准备就绪,让我们测试分析器

    var analyzeResponse = client.Analyze(a => a
        .Index("analysis-index") 
        .Analyzer("my_analyzer")
        .Text("F# is THE SUPERIOR language :)")
    );
    

    【讨论】:

      【解决方案2】:

      您应该尝试安装 Cerebro。 https://github.com/lmenezes/cerebro

      安装后,您将进入菜单分析。然后您可以轻松看到“按字段类型分析”或“按分析仪分析”。

      这应该会有所帮助

      【讨论】:

        猜你喜欢
        • 2017-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多