Skip to content

Commit a4f5023

Browse files
committed
Add highlight option to phrase suggester
Closes #1007
1 parent 6ce9a76 commit a4f5023

File tree

4 files changed

+70
-2
lines changed

4 files changed

+70
-2
lines changed

src/Nest/DSL/Suggest/PhraseSuggestDescriptor.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ public interface IPhraseSuggester : ISuggester
2929
[JsonProperty(PropertyName = "direct_generator")]
3030
IEnumerable<IDirectGenerator> DirectGenerator { get; set; }
3131

32-
[JsonProperty("collate")]
32+
[JsonProperty(PropertyName = "highlight")]
33+
IPhraseSuggestHighlight Highlight { get; set; }
34+
35+
[JsonProperty(PropertyName = "collate")]
3336
IPhraseSuggestCollate Collate { get; set; }
3437
}
3538

@@ -41,7 +44,7 @@ public class PhraseSuggester : Suggester, IPhraseSuggester
4144
public decimal? MaxErrors { get; set; }
4245
public char? Separator { get; set; }
4346
public IEnumerable<IDirectGenerator> DirectGenerator { get; set; }
44-
47+
public IPhraseSuggestHighlight Highlight { get; set; }
4548
public IPhraseSuggestCollate Collate { get; set; }
4649
}
4750

@@ -61,6 +64,8 @@ public class PhraseSuggestDescriptor<T> : BaseSuggestDescriptor<T>, IPhraseSugge
6164

6265
IEnumerable<IDirectGenerator> IPhraseSuggester.DirectGenerator { get; set; }
6366

67+
IPhraseSuggestHighlight IPhraseSuggester.Highlight { get; set; }
68+
6469
IPhraseSuggestCollate IPhraseSuggester.Collate { get; set; }
6570

6671
public PhraseSuggestDescriptor<T> Text(string text)
@@ -129,6 +134,13 @@ public PhraseSuggestDescriptor<T> DirectGenerator(params Func<DirectGeneratorDes
129134
return this;
130135
}
131136

137+
public PhraseSuggestDescriptor<T> Highlight(Func<PhraseSuggestHighlightDescriptor, PhraseSuggestHighlightDescriptor> highlightDescriptor)
138+
{
139+
var selector = highlightDescriptor(new PhraseSuggestHighlightDescriptor());
140+
Self.Highlight = selector.Highlight;
141+
return this;
142+
}
143+
132144
public PhraseSuggestDescriptor<T> Collate(Func<PhraseSuggestCollateDescriptor<T>, PhraseSuggestCollateDescriptor<T>> collateDescriptor)
133145
{
134146
var selector = collateDescriptor(new PhraseSuggestCollateDescriptor<T>());
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
using Nest.Resolvers.Converters;
2+
using Newtonsoft.Json;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using System.Text;
7+
8+
namespace Nest
9+
{
10+
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
11+
public interface IPhraseSuggestHighlight
12+
{
13+
[JsonProperty(PropertyName = "pre_tag")]
14+
string PreTag { get; set; }
15+
16+
[JsonProperty(PropertyName = "post_tag")]
17+
string PostTag { get; set; }
18+
}
19+
20+
public class PhraseSuggestHighlight : IPhraseSuggestHighlight
21+
{
22+
public string PreTag { get; set; }
23+
24+
public string PostTag { get; set; }
25+
}
26+
27+
public class PhraseSuggestHighlightDescriptor : IPhraseSuggestHighlight
28+
{
29+
internal IPhraseSuggestHighlight Highlight = new PhraseSuggestHighlight();
30+
31+
string IPhraseSuggestHighlight.PreTag { get; set; }
32+
33+
string IPhraseSuggestHighlight.PostTag { get; set; }
34+
35+
public PhraseSuggestHighlightDescriptor PreTag(string preTag)
36+
{
37+
this.Highlight.PreTag = preTag;
38+
return this;
39+
}
40+
41+
public PhraseSuggestHighlightDescriptor PostTag(string postTag)
42+
{
43+
this.Highlight.PostTag = postTag;
44+
return this;
45+
}
46+
}
47+
}

src/Nest/Nest.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@
260260
<Compile Include="DSL\Suggest\Context\GeoLocationSuggestDescriptor.cs" />
261261
<Compile Include="DSL\Suggest\Context\ISuggestContext.cs" />
262262
<Compile Include="DSL\SearchTemplateDescriptor.cs" />
263+
<Compile Include="DSL\Suggest\PhraseSuggestHighlightDescriptor.cs" />
263264
<Compile Include="DSL\TemplateExistsDescriptor.cs" />
264265
<Compile Include="Domain\Responses\PingResponse.cs" />
265266
<Compile Include="Domain\Responses\NodesShutdownResponse.cs" />

src/Tests/Nest.Tests.Unit/Search/suggest/PhraseSuggestTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ public void PhraseSuggestCollateTest()
9797
.Size(1)
9898
.GramSize(2)
9999
.MaxErrors(0.5m)
100+
.Highlight(h => h
101+
.PreTag("<em>")
102+
.PostTag("</em>")
103+
)
100104
.Collate(c => c
101105
.Query(q => q
102106
.Match(m => m
@@ -122,6 +126,10 @@ public void PhraseSuggestCollateTest()
122126
""size"": 1,
123127
""gram_size"": 2,
124128
""max_errors"": 0.5,
129+
""highlight"": {
130+
""pre_tag"": ""<em>"",
131+
""post_tag"": ""</em>""
132+
},
125133
""collate"": {
126134
""query"": {
127135
""match"": {

0 commit comments

Comments
 (0)