如何配置索引以使用JAVA API在ElasticSearch中使用BM25?

eli*_*sah 4 java elasticsearch

我正在尝试从MySQL数据库迁移到ElasticSearch,因此我可以在每个字段上使用BM25相似性的全文搜索技术.我正在使用JAVA从MySQL获取条目并将它们添加到ElasticSearch索引中.

我正在使用JAVA 索引API构建索引,但我无法找到一种方法来设置我的字段的BM25相似性.

我认为MySQL和dev的表产品表是一个索引,产品是索引类型.

原始表产品包含以下字段:

  • ID
  • 标题
  • 描述

你可以在我的Github上找到代码,如果你想看看.这是我用Maven集成配置的分叉项目.

欢迎任何建议和任何帮助,谢谢!

eli*_*sah 5

我找到了问题的答案.

这是代码:

Settings settings = ImmutableSettings
            .settingsBuilder()
            .put("cluster.name", "es_cluster_name"))
            // Define similarity module settings
            .put("similarity.custom.type", "BM25")
            .put("similarity.custom.k1", 2.0f)
            .put("similarity.custom.b", 1.5f)
            .build();

Client client = new TransportClient(settings);
Run Code Online (Sandbox Code Playgroud)

在实例化客户端之前,您似乎可以在"设置"中定义要使用的相似性模块.

以下是目前支持的相似性模块列表elasticsearch:默认值,BM25,DFR,IB,LMDirichlet和LMJelinekMercer.您可以在下面的设置中指定要使用的那个:

   .put("similarity.custom.type", "..." )
Run Code Online (Sandbox Code Playgroud)

每个相似性都有自己的参数,您也可以配置这些参数以便正确使用它.

注意:代码在elasticsearch1.1.0上测试.