├── .gitignore ├── README.textile ├── pom.xml └── src └── main └── java └── org └── elasticsearch └── index └── similarity ├── CustomSimilarity.java └── CustomSimilarityProvider.java /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled source # 2 | ################### 3 | *.com 4 | *.class 5 | *.dll 6 | *.exe 7 | *.o 8 | *.so 9 | target/ 10 | target/ 11 | .classpath 12 | .project 13 | .settings 14 | 15 | 16 | # Packages # 17 | ############ 18 | # it's better to unpack these files and commit the raw source 19 | # git has its own built in compression methods 20 | *.7z 21 | *.dmg 22 | *.gz 23 | *.iso 24 | *.jar 25 | *.rar 26 | *.tar 27 | *.zip 28 | 29 | # Logs and databases # 30 | ###################### 31 | *.log 32 | *.sql 33 | *.sqlite 34 | 35 | # OS generated files # 36 | ###################### 37 | .DS_Store* 38 | ehthumbs.db 39 | Icon? 40 | Thumbs.db 41 | 42 | -------------------------------------------------------------------------------- /README.textile: -------------------------------------------------------------------------------- 1 | h1. A custom SimilarityProvider example for Elasticseach 2 | 3 | This plugin contains a custom @Similarity@ class that can be used in an index: 4 | 5 |
 6 | curl -XPOST 'http://host:port/tweeter/' -d '
 7 | {
 8 |   "settings": {
 9 |     "similarity": {
10 |       "index": {
11 |         "type": "org.elasticsearch.index.similarity.CustomSimilarityProvider"
12 |       },
13 |       "search": {
14 |         "type": "org.elasticsearch.index.similarity.CustomSimilarityProvider"
15 |       }
16 |     }
17 |   }
18 | }'
19 | 
20 | 21 | Enjoy 22 | 23 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | 5 | fr.tlrx 6 | elasticsearch-custom-similarity-provider 7 | 1.0-SNAPSHOT 8 | jar 9 | A custom SimilarityProvider example for Elasticsearch 10 | https://github.com/tlrx/elasticsearch-custom-similarity-provider 11 | 12 | 13 | UTF-8 14 | 0.20.0.Beta1-SNAPSHOT 15 | 16 | 17 | 18 | 19 | junit 20 | junit 21 | 4.10 22 | test 23 | 24 | 25 | org.elasticsearch 26 | elasticsearch 27 | ${elasticsearch.version} 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/main/java/org/elasticsearch/index/similarity/CustomSimilarity.java: -------------------------------------------------------------------------------- 1 | package org.elasticsearch.index.similarity; 2 | 3 | import org.apache.lucene.search.DefaultSimilarity; 4 | 5 | /** 6 | * Custom similarity class 7 | * 8 | * @author tanguy 9 | * 10 | */ 11 | @SuppressWarnings("serial") 12 | public class CustomSimilarity extends DefaultSimilarity { 13 | 14 | @Override 15 | public float idf(int docFreq, int numDocs) { 16 | return 1.0f; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/elasticsearch/index/similarity/CustomSimilarityProvider.java: -------------------------------------------------------------------------------- 1 | package org.elasticsearch.index.similarity; 2 | 3 | import org.elasticsearch.common.inject.Inject; 4 | import org.elasticsearch.common.inject.assistedinject.Assisted; 5 | import org.elasticsearch.common.settings.Settings; 6 | import org.elasticsearch.index.Index; 7 | import org.elasticsearch.index.settings.IndexSettings; 8 | 9 | /** 10 | * Simple {@link SimilarityProvider} for a {@link CustomSimilarity} 11 | * 12 | * @author tlrx 13 | * 14 | */ 15 | public class CustomSimilarityProvider extends AbstractSimilarityProvider { 16 | 17 | private CustomSimilarity similarity; 18 | 19 | @Inject 20 | public CustomSimilarityProvider(Index index, 21 | @IndexSettings Settings indexSettings, @Assisted String name, 22 | @Assisted Settings settings) { 23 | super(index, indexSettings, name); 24 | this.similarity = new CustomSimilarity(); 25 | } 26 | 27 | public CustomSimilarity get() { 28 | return similarity; 29 | } 30 | } 31 | --------------------------------------------------------------------------------