Skip to content

Commit 722750b

Browse files
feat(settings): Add attributesToTransliterate settings parameter (#723)
1 parent ab8a46d commit 722750b

File tree

6 files changed

+32
-1
lines changed

6 files changed

+32
-1
lines changed

Sources/AlgoliaSearchClient/Models/Settings/SettingsParameters.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,15 @@ public protocol SettingsParameters: CommonParameters {
8181
var separatorsToIndex: String? { get set }
8282

8383
// MARK: - Languages
84+
85+
/**
86+
Specify on which attributes to apply transliteration.
87+
88+
Transliteration refers to the ability of finding results in a given alphabet with a query in another alphabet. For example, in Japanese, transliteration enables users to find results indexed in Kanji or Katakana with a query in Hiragana.
89+
- Engine default: [*]
90+
- [Documentation](https://www.algolia.com/doc/api-reference/api-parameters/attributesToTransliterate/?language=swift)
91+
*/
92+
var attributesToTransliterate: [Attribute]? { get set }
8493

8594
/**
8695
List of [Attribute] on which to do a decomposition of camel case words.

Sources/AlgoliaSearchClient/Models/Settings/SettingsParametersCodingKeys.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public enum SettingsParametersCodingKeys: String, CodingKey {
3434
case separatorsToIndex
3535
case ignorePlurals
3636
case removeStopWords
37+
case attributesToTransliterate
3738
case camelCaseAttributes
3839
case decompoundedAttributes
3940
case keepDiacriticsOnCharacters

Sources/AlgoliaSearchClient/Models/Settings/SettingsParametersStorage.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ struct SettingsParametersStorage: SettingsParameters {
3434
var separatorsToIndex: String?
3535
var ignorePlurals: LanguageFeature?
3636
var removeStopWords: LanguageFeature?
37+
var attributesToTransliterate: [Attribute]?
3738
var camelCaseAttributes: [Attribute]?
3839
var decompoundedAttributes: DecompoundedAttributes?
3940
var keepDiacriticsOnCharacters: String?
@@ -180,6 +181,10 @@ extension SettingsParametersStorageContainer {
180181
get { settingsParametersStorage.removeStopWords }
181182
set { settingsParametersStorage.removeStopWords = newValue }
182183
}
184+
public var attributesToTransliterate: [Attribute]? {
185+
get { settingsParametersStorage.attributesToTransliterate }
186+
set { settingsParametersStorage.attributesToTransliterate = newValue }
187+
}
183188
public var camelCaseAttributes: [Attribute]? {
184189
get { settingsParametersStorage.camelCaseAttributes }
185190
set { settingsParametersStorage.camelCaseAttributes = newValue }

Tests/AlgoliaSearchClientTests/Doc/APIParameters/APIParameters+Languages.swift

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,21 @@ extension APIParameters {
246246
}
247247
}
248248
}
249-
249+
func attributesToTransliterate() {
250+
/*
251+
attributesToTransliterate = ["name", "description"]
252+
*/
253+
func set_attributes_to_transliterate() {
254+
let settings = Settings()
255+
.set(\.attributesToTransliterate, to: ["name", "description"])
256+
257+
index.setSettings(settings) { result in
258+
if case .success(let response) = result {
259+
print("Response: \(response)")
260+
}
261+
}
262+
}
263+
}
250264
func decompoundQuery() {
251265
/*
252266
decompoundQuery = true

Tests/AlgoliaSearchClientTests/Misc/Settings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"attributesToHighlight": null,
1818
"paginationLimitedTo": 1000,
1919
"attributeForDistinct": null,
20+
"attributesToTransliterate": ["a", "b", "c"],
2021
"exactOnSingleWordQuery": "attribute",
2122
"enablePersonalization": true,
2223
"decompoundQuery": true,

Tests/AlgoliaSearchClientTests/Unit/Settings/SettingsTests.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class SettingsTests: XCTestCase {
2626
let settings = try decoder.decode(Settings.self, from: data)
2727
XCTAssertEqual(settings.attributeCriteriaComputedByMinProximity, false)
2828
XCTAssertEqual(settings.enablePersonalization, true)
29+
XCTAssertEqual(settings.attributesToTransliterate, ["a", "b", "c"])
2930
XCTAssertEqual(settings.decompoundQuery, true)
3031
}
3132
}

0 commit comments

Comments
 (0)