elasticsearch 自定义similarity 插件开发

原文  http://www.cnblogs.com/luanfei/p/4029442.html

主题 Elastic Search

转自: http://www.chepoo.com/elasticsearch-similarity-custom-plug-in-development.html

在搜索开发中,我们要修改打分机制,就需要自定义similarity。现在来简单说一下elasticsearch下的自定义similarity 插件开发。

网上的 https://github.com/tlrx/elasticsearch-custom-similarity-provider 仅仅支持0.20.0.Beta1-SNAPSHOT版本,现在我们用的版本是elasticsearch 0.90版本以上。那个例子现在不能用,我修改了一下。

1.继承DefaultSimilarity,实现自己的搜索打分机制。

package org.elasticsearch.index.similarity;

import org.apache.lucene.search.similarities.DefaultSimilarity;

/**
 * Custom similarity class
 *
 * @author xq
 *
 */
public class CustomSimilarity extends DefaultSimilarity {

  @Override
  public float idf(long docFreq, long numDocs) {
    return 1.0f;
  }

}

2.继续AbstractSimilarityProvider,把自定义的打分机制类加载到elasticsearch中。

package org.elasticsearch.index.similarity;

import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.inject.assistedinject.Assisted;
import org.elasticsearch.common.settings.Settings;

/**
 * Simple {@link SimilarityProvider} for a {@link CustomSimilarity}
 *
 * @author xq
 *
 */
public class CustomSimilarityProvider extends AbstractSimilarityProvider {

  private CustomSimilarity similarity;

  @Inject
  public CustomSimilarityProvider(@Assisted String name, @Assisted Settings settings) {
    super(name);
    this.similarity = new CustomSimilarity();
  }

  public CustomSimilarity get() {
    return similarity;
  }
}

3.继承AbstractPlugin作为elasticsearch插件使用

public class CustomerSimilarityPlugin extends AbstractPlugin {

  @Override public String name() {
    return "customer-similarity";
  }

  @Override public String description() {
    return "customer similarity";
  }

  @Override public void processModule(Module module) {
    if (module instanceof SimilarityModule) {
      SimilarityModule similarityModule = (SimilarityModule) module;
      similarityModule.addSimilarity("customer-similarity", CustomSimilarityProvider.class);
    }
  }
}

4.使用

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

在创建mapping的使用自定义的打分规则:

{
  "news" : {
    "properties" : {
      "title" : { "type" : "string", "similarity" : "my_similarity" }
    }
}

在elasticsearch.yml中配置自定义的打分规则类为默认规则。 index.similarity.default.type: my_similarity

时间: 2024-10-08 02:15:06

elasticsearch 自定义similarity 插件开发的相关文章

elasticsearch 自定义_id

elasticsearch 自定义ID: curl -s -XPUT localhost:9200/web -d ' { "mappings": { "blog": { "_id": { "path": "uuid" }, "properties": { "title": { "type": "string", "in

ElasticSearch自定义分析器-集成结巴分词插件

关于结巴分词 ElasticSearch 插件: https://github.com/huaban/elasticsearch-analysis-jieba 该插件由huaban开发.支持Elastic Search 版本<=2.3.5. 结巴分词分析器 结巴分词插件提供3个分析器:jieba_index.jieba_search和jieba_other. jieba_index: 用于索引分词,分词粒度较细: jieba_search: 用于查询分词,分词粒度较粗: jieba_other:

Elasticsearch 自定义多个分析器

分析器(Analyzer) Elasticsearch 无论是内置分析器还是自定义分析器,都由三部分组成:字符过滤器(Character Filters).分词器(Tokenizer).词元过滤器(Token Filters). 分析器Analyzer工作流程: Input Text => Character Filters(如果有多个,按顺序应用) => Tokenizer => Token Filters(如果有多个,按顺序应用) => Output Token 字符过滤器(C

ElasticSearch——自定义模板

output中配置 elasticsearch{ action => "index" hosts => ["xxx"] index => "http-log-logstash" document_type => "logs" template => "opt/http-logstash.json" template_name => "http-log-logst

Elasticsearch自定义脚本完成性能测试

1.ES性能测试 要求: 1)完成ES并发100次性能测试: 2)统计得出访问时间结果值. 2.脚本实现 #!/bin/sh KEYWORDS_TXT="./keywords.txt" cat /dev/null > ./rst.txt echo "beginTime=`date`" cat $KEYWORDS_TXT | while read line do echo "line=$line" echo "curl -XGET

elasticsearch 自定义打分

curl -XGET 'http://localhost:9200/searchsuggestion/searchsuggestion/_search?pretty' -d '{ "fields" : ["company_full_name","id"], "size" : 10, "query": { "function_score": { "functions":

filebrat6.8多路径日志输出到elasticsearch自定义多个索引

原文地址:https://blog.51cto.com/12102819/2481956

ElasticSearch 5.4 自定义插件

ElasticSearch 做为数据仓库处理速度确实很强,但是很多和业务相关的函数ElasticSearch怎么支持的,通过查询发现,ElasticSearch支持自定义插件(相当于自定义函数),通过自定义插件,开发人员可以实现各种业务相关的函数定义供相关人员使用. 1.   ElasticSearch  自定义插件编写 后续补充. 2.  ElasticSearch  自定义插件打包 2.1  自定义插件开发完成后,需要增加“plugin-descriptor.properties”配置文件,

elasticsearch客户端连接选择

elasticsearch支持两种协议: http协议. Native Elasticsearch binary protocol(本地elasticsearch二进制协议):elasticsearch自主研发的节点间通信的协议. 还可以通过使用插件来扩展支持的协议.有一些官方的插件. java之外的语言不推荐使用第二种方式,因为第二种方式需要很多自定义序列化. 支持的客户端 Transport Transport是连接到Elasticsearch的本地方法之一.它是官方Elasticsearc