如何实现elasticsearch自定义相似性插件?

时间:2014-01-15 15:37:43

标签: java lucene indexing elasticsearch querydsl

我需要覆盖由Elasticsearch用于索引和搜索的Lucene Default Similarity Class。在搜索网上,我发现了一些类似的实现,它们正在做类似的事情。我的困难是我不知道如何在我的代码中实际实现它。我找到了一些资源:

https://github.com/tlrx/elasticsearch-custom-similarity-provider

curl -XPOST 'http://host:port/tweeter/' -d '
{
  "settings": {
    "similarity": {
      "index": {
        "type": "org.elasticsearch.index.similarity.CustomSimilarityProvider"
      },
      "search": {
        "type": "org.elasticsearch.index.similarity.CustomSimilarityProvider"
      }
    }
  }
}'

我无法理解如何在索引编制过程中直接使用此行,以便我的默认相似性更改为此自定义相似度。

org.elasticsearch.index.similarity.CustomSimilarityProvider

任何人都可以告诉我怎么做到这一点?我尝试在我的机器上运行相同的东西,但它不适合我。我是否需要修改此行或路径?

提前致谢。

2 个答案:

答案 0 :(得分:4)

您发布的https://github.com/tlrx/elasticsearch-custom-similarity-provider的链接适用于旧版本的elasticsearch。

基于elasticsearch味道插件https://github.com/codelibs/elasticsearch-taste,我为版本2.1.1制作了一个简单的自定义相似性插件,并详细解释了所有步骤 https://github.com/stefansavev/elasticsearch-custom-similarity-example。我只对三个java文件和一个配置文件保持简单。我希望你觉得它很有用。

答案 1 :(得分:1)

您发布的json是使用create index api创建索引的json。在同一请求中,您可以为该索引提供设置,映射等。在这些设置中,您可以注册自定义相似性。

创建索引后,您需要使用index api实际将文档编入索引。

此外,由于0.90,您还可以通过映射配置自定义相似度per field