我正在尝试从MySQL数据库迁移到ElasticSearch,因此我可以在每个字段上使用BM25相似性的全文搜索技术.我正在使用JAVA从MySQL获取条目并将它们添加到ElasticSearch索引中.
我正在使用JAVA 索引API构建索引,但我无法找到一种方法来设置我的字段的BM25相似性.
我认为MySQL和dev的表产品表是一个索引,产品是索引类型.
原始表产品包含以下字段:
ID
标题
描述
你可以在我的Github上找到代码,如果你想看看.这是我用Maven集成配置的分叉项目.
欢迎任何建议和任何帮助,谢谢!
我找到了问题的答案.
这是代码:
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);
在实例化客户端之前,您似乎可以在"设置"中定义要使用的相似性模块.
以下是目前支持的相似性模块列表elasticsearch
:默认值,BM25,DFR,IB,LMDirichlet和LMJelinekMercer.您可以在下面的设置中指定要使用的那个:
.put("similarity.custom.type", "..." )
每个相似性都有自己的参数,您也可以配置这些参数以便正确使用它.
注意:代码在elasticsearch
1.1.0上测试.