关于es 分词疑问(关键词-自动补全)

关于es 分词疑问

img


对自动补全的completion数组类型字段 用completion_analyzer自定义分词器(自定义的规则是不分开 转换为拼音 看上面的图)会分成啥呢
比如 这个字段有[{“大学”},{"高中"}] 这个数组 会被分词器分成啥样呢

【以下回答由 GPT 生成】

对于这个问题,你可以使用Elasticsearch的分析API来模拟分词器的工作过程,以了解分词器是如何对关键词进行分词的。根据你的描述,你可以使用自定义的completion_analyzer分词器来处理字段的值。

首先,你需要确认你的索引中是否已经包含了该字段,并且使用了正确的分词器。

接下来,你可以使用Elasticsearch的_analyze API来测试分词器的效果。以下是一个示例代码,使用Java编写:

import org.elasticsearch.client.Request;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.Response;
import org.elasticsearch.client.RestClientBuilder;

import java.io.IOException;
import java.util.Collections;

public class AnalyzeExample {
    public static void main(String[] args) throws IOException {
        RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http"));
        RestClient restClient = builder.build();

        String field = "your_field_name";
        String text = "[{\"大学\"},{\"高中\"}]";

        Request request = new Request("GET", "/_analyze");
        request.setJsonEntity("{\"analyzer\": \"completion_analyzer\",\"text\": " + text + "}");

        Response response = restClient.performRequest(request);
        System.out.println(response.getStatusLine().getStatusCode());
        System.out.println(response.getEntity().getContent().toString());

        restClient.close();
    }
}

请注意,你需要将"localhost"和"your_field_name"替换为你的Elasticsearch服务器和自定义字段的名称。

运行上述代码后,你将能够获得分词结果和状态码。查看分词结果,你将获得一个由分词后的关键词组成的数组。

希望这能帮助你解决问题!如果你有任何疑问,请随时询问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^