Skip to content

Fluent support for configuring similarity modules #748

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 2, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions src/Nest/.gitignore

This file was deleted.

9 changes: 8 additions & 1 deletion src/Nest/DSL/CreateIndexDescriptor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,14 @@ public CreateIndexDescriptor Analysis(Func<AnalysisDescriptor, AnalysisDescripto
this._IndexSettings.Analysis = analysis == null ? null : analysis._AnalysisSettings;
return this;
}


public CreateIndexDescriptor Similarity(Func<SimilarityDescriptor, SimilarityDescriptor> similaritySelector)
{
similaritySelector.ThrowIfNull("similaritySelector");
var similarity = similaritySelector(new SimilarityDescriptor(this._IndexSettings.Similarity));
this._IndexSettings.Similarity = similarity == null ? null : similarity._SimilaritySettings;
return this;
}

protected override void UpdatePathInfo(IConnectionSettingsValues settings, ElasticsearchPathInfo<CreateIndexRequestParameters> pathInfo)
{
Expand Down
38 changes: 38 additions & 0 deletions src/Nest/DSL/SimilarityDescriptor.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Nest
{
public class SimilarityDescriptor
{
internal readonly SimilaritySettings _SimilaritySettings;

public SimilarityDescriptor()
{
this._SimilaritySettings = new SimilaritySettings();
}

public SimilarityDescriptor(SimilaritySettings settings)
{
this._SimilaritySettings = settings;
}

public SimilarityDescriptor CustomSimilarities(
Func<FluentDictionary<string, SimilarityBase>, FluentDictionary<string, SimilarityBase>> similaritySelector)
{
similaritySelector.ThrowIfNull("similaritySelector");
var similarities = new FluentDictionary<string, SimilarityBase>(this._SimilaritySettings.CustomSimilarities);
var newSimilarities = similaritySelector(similarities);
this._SimilaritySettings.CustomSimilarities = newSimilarities;
return this;
}

public SimilarityDescriptor Default(string defaultSimilarity)
{
this._SimilaritySettings.Default = defaultSimilarity;
return this;
}
}
}
23 changes: 0 additions & 23 deletions src/Nest/Domain/Settings/CustomSimilaritySettings.cs

This file was deleted.

3 changes: 2 additions & 1 deletion src/Nest/Domain/Settings/IndexSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class IndexSettings
public IndexSettings()
{
this.Analysis = new AnalysisSettings();
this.Similarity = new SimilaritySettings();
this.Mappings = new List<RootObjectMapping>();
this.Warmers = new Dictionary<string, WarmerMapping>();
this.Settings = new Dictionary<string, object>();
Expand Down Expand Up @@ -59,7 +60,7 @@ public int? NumberOfShards
[JsonConverter(typeof(DictionaryKeysAreNotPropertyNamesJsonConverter))]
public Dictionary<string, WarmerMapping> Warmers { get; internal set; }

public SimilaritySettings Similarity { get; set; }
public SimilaritySettings Similarity { get; internal set; }


}
Expand Down
24 changes: 0 additions & 24 deletions src/Nest/Domain/Settings/SimilaritySettings.cs

This file was deleted.

25 changes: 25 additions & 0 deletions src/Nest/Domain/Similarity/BM25Similarity.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Nest
{
public class BM25Similarity : SimilarityBase
{
public BM25Similarity()
{
this.Type = "BM25";
}

[JsonProperty("k1")]
public double K1 { get; set; }

[JsonProperty("b")]
public double B { get; set; }

[JsonProperty("discount_overlaps")]
public bool DiscountOverlaps { get; set; }
}
}
22 changes: 22 additions & 0 deletions src/Nest/Domain/Similarity/DFRSimilarity.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Nest
{
public class DFRSimilarity : SimilarityBase
{
public DFRSimilarity()
{
this.Type = "DFR";
}

[JsonProperty("basic_model")]
public string BasicModel { get; set; }

[JsonProperty("after_effect")]
public string AfterEffect { get; set; }
}
}
19 changes: 19 additions & 0 deletions src/Nest/Domain/Similarity/DefaultSimilarity.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Nest
{
public class DefaultSimilarity : SimilarityBase
{
public DefaultSimilarity()
{
this.Type = "default";
}

[JsonProperty("discount_overlaps")]
public bool DiscountOverlaps { get; set; }
}
}
22 changes: 22 additions & 0 deletions src/Nest/Domain/Similarity/IBSimilarity.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Nest
{
public class IBSimilarity : SimilarityBase
{
public IBSimilarity()
{
this.Type = "IB";
}

[JsonProperty("distribution")]
public string Distribution { get; set; }

[JsonProperty("lambda")]
public string Lambda { get; set; }
}
}
19 changes: 19 additions & 0 deletions src/Nest/Domain/Similarity/LMDirichletSimilarity.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Nest
{
public class LMDirichletSimilarity : SimilarityBase
{
public LMDirichletSimilarity()
{
this.Type = "LMDirichlet";
}

[JsonProperty("mu")]
public int Mu { get; set; }
}
}
19 changes: 19 additions & 0 deletions src/Nest/Domain/Similarity/LMJelinekSimilarity.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Nest
{
public class LMJelinekSimilarity : SimilarityBase
{
public LMJelinekSimilarity()
{
this.Type = "LMJelinekMercer";
}

[JsonProperty("lambda")]
public double Lambda { get; set; }
}
}
29 changes: 29 additions & 0 deletions src/Nest/Domain/Similarity/SimilarityBase.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Nest
{
public class SimilarityBase
{
[JsonProperty("type")]
public string Type { get; protected set; }

[JsonProperty("normalization")]
public string Normalization { get; set; }

[JsonProperty("normalization.h1.c")]
public string NormalizationH1C { get; set; }

[JsonProperty("normalization.h2.c")]
public string NormalizationH2C { get; set; }

[JsonProperty("normalization.h3.c")]
public string NormalizationH3C { get; set; }

[JsonProperty("normalization.z.z")]
public string NormalizationZZ { get; set; }
}
}
22 changes: 22 additions & 0 deletions src/Nest/Domain/Similarity/SimilaritySettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@

using Nest.Resolvers.Converters;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;

namespace Nest
{
[JsonConverter(typeof(SimilaritySettingsConverter))]
public class SimilaritySettings
{
public SimilaritySettings()
{
this.CustomSimilarities = new Dictionary<string, SimilarityBase>();
}

public string Default { get; set; }

[JsonConverter(typeof(SimilarityCollectionConverter))]
public IDictionary<string, SimilarityBase> CustomSimilarities { get; set; }
}
}
13 changes: 11 additions & 2 deletions src/Nest/Nest.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,13 @@
<Compile Include="Domain\Responses\RestoreResponse.cs" />
<Compile Include="Domain\Responses\SnapshotResponse.cs" />
<Compile Include="Domain\Aggregations\TermsIncludeExclude.cs" />
<Compile Include="Domain\Similarity\BM25Similarity.cs" />
<Compile Include="Domain\Similarity\DefaultSimilarity.cs" />
<Compile Include="Domain\Similarity\DFRSimilarity.cs" />
<Compile Include="Domain\Similarity\IBSimilarity.cs" />
<Compile Include="Domain\Similarity\LMDirichletSimilarity.cs" />
<Compile Include="Domain\Similarity\LMJelinekSimilarity.cs" />
<Compile Include="Domain\Similarity\SimilarityBase.cs" />
<Compile Include="DSL\ClusterGetSettingsDescriptor.cs" />
<Compile Include="DSL\ClusterSettingsDescriptor.cs" />
<Compile Include="DSL\DeleteSnapshotDescriptor.cs" />
Expand All @@ -168,6 +175,7 @@
<Compile Include="DSL\Query\PlainQuery.cs" />
<Compile Include="DSL\Query\QueryContainer.cs" />
<Compile Include="DSL\Rescore\RescoreQueryDescriptor.cs" />
<Compile Include="DSL\SimilarityDescriptor.cs" />
<Compile Include="DSL\Suggest\Fuzziness.cs" />
<Compile Include="DSL\Suggest\IFuzziness.cs" />
<Compile Include="DSL\Visitor\DslPrettyPrintVisitor.cs" />
Expand Down Expand Up @@ -405,7 +413,6 @@
<Compile Include="Domain\Responses\WarmerResponse.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Domain\Settings\CustomSimilaritySettings.cs" />
<Compile Include="DSL\Rescore\RescoreDescriptor.cs" />
<Compile Include="DSL\Termplates\CreateWarmerDescriptor.cs" />
<Compile Include="DSL\PutWarmerDescriptor.cs" />
Expand All @@ -422,7 +429,7 @@
<Compile Include="Domain\Responses\BulkOperationResponseItem.cs" />
<Compile Include="Domain\Responses\MultiSearchResponse.cs" />
<Compile Include="Domain\Responses\IBulkResponse.cs" />
<Compile Include="Domain\Settings\SimilaritySettings.cs" />
<Compile Include="Domain\Similarity\SimilaritySettings.cs" />
<Compile Include="ElasticClient-MultiSearch.cs" />
<Compile Include="Domain\Mapping\Types\TemplateMapping.cs" />
<Compile Include="Domain\Responses\TemplateResponse.cs" />
Expand Down Expand Up @@ -637,6 +644,7 @@
<Compile Include="DSL\Filter\LimitFilterDescriptor.cs" />
<Compile Include="DSL\Filter\IdsFilterDescriptor.cs" />
<Compile Include="DSL\Filter\ExistsFilterDescriptor.cs" />
<Compile Include="Resolvers\Converters\SimilarityCollectionConverter.cs" />
<Compile Include="Resolvers\Converters\FuzzinessConverter.cs" />
<Compile Include="Resolvers\Converters\Filters\RangeFilterJsonReader.cs" />
<Compile Include="Resolvers\Converters\Filters\RegexpFilterJsonReader.cs" />
Expand Down Expand Up @@ -745,6 +753,7 @@
<Compile Include="Resolvers\Converters\FieldNameFilterConverter.cs" />
<Compile Include="Resolvers\Converters\FieldNameQueryConverter.cs" />
<Compile Include="Resolvers\Converters\IndexSettingsResponseConverter.cs" />
<Compile Include="Resolvers\Converters\SimilaritySettingsConverter.cs" />
<Compile Include="Resolvers\Converters\SuggestResponseConverter.cs" />
<Compile Include="Resolvers\Converters\PropertyPathMarkerConverter.cs" />
<Compile Include="Resolvers\Converters\DynamicMappingOptionConverter.cs" />
Expand Down
Loading