├── .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 |
--------------------------------------------------------------------------------