# Custom Similarity in plugin

**URL:** <https://discuss.elastic.co/t/custom-similarity-in-plugin/50745>\
**Category:** Elasticsearch\
**Created:** [May 23, 2016, 4:56pm UTC](https://discuss.elastic.co/t/custom-similarity-in-plugin/50745 "2016-05-23T16:56:07Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Aurelien\_3](https://avatars.discourse-cdn.com/v4/letter/a/ce7236/32.png) [@Aurelien\_3](https://discuss.elastic.co/u/Aurelien_3)\
**Post date:** [May 23, 2016, 4:56pm UTC](https://discuss.elastic.co/t/custom-similarity-in-plugin/50745/1 "2016-05-23T16:56:07Z")

</div>

Hi, I tried to use a custom similarity in a plugin to score with payload. To do so I extended ClassicSimilarity and redefined scorePayload.

Once the plugin is deployed, the score does not change with payload. Actually it seems that score payload is never called.

Any idea ?

```
public class PayloadSimilarity extends ClassicSimilarity {
    
  @Override
  public float tf(float freq) {
    return 1.0F;
  }
  
  
   @Override
   public float scorePayload(int doc, int start, int end, BytesRef payload) {
     if (payload != null) {
       return PayloadHelper.decodeFloat(payload.bytes, payload.offset);
     } else {
       return 1.0F;
    }
   }

  @Override
   public String toString() {
     return "PayloadSimilarity";
  }    
}

```

I defined the provided :

```
 public class PayloadSimilarityProvider extends AbstractSimilarityProvider {

  private final PayloadSimilarity similarity = new PayloadSimilarity();

   @Inject
  public PayloadSimilarityProvider(@Assisted String name, @Assisted Settings settings) {
    super(name);
  }

  @Override
  public Similarity get() {
    return similarity;
  }

}

```

And declared my similarity like so in the plugin :

```
public void onModule(SimilarityModule module) {
  module.addSimilarity("payload", PayloadSimilarityProvider.class);
}

```

Any clue would be welcome.

---

<div class="post-metadata">

**Author:** ![sdauletau](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sdauletau/32/24779_2.png) [@sdauletau](https://discuss.elastic.co/u/sdauletau)\
**Post date:** [May 23, 2016, 6:20pm UTC](https://discuss.elastic.co/t/custom-similarity-in-plugin/50745/2 "2016-05-23T18:20:59Z")

</div>

I have an example of term position scoring.  
[https://github.com/sdauletau/elasticsearch-position-similarity](https://github.com/sdauletau/elasticsearch-position-similarity).

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 5, 2017, 10:49pm UTC](https://discuss.elastic.co/t/custom-similarity-in-plugin/50745/3 "2017-07-05T22:49:43Z")

</div>


