     /// - `none`: No specific processing is done when a query does not return any result.
     public var removeWordsIfNoResults: RemoveWordsIfNoResults? {
         get {
-            if let value = self["removeWordsIfNoResults"] {
-                return RemoveWordsIfNoResults(rawValue: value)
-            } else {
-                return nil
-            }
+            guard let value = self["removeWordsIfNoResults"] else { return nil }
+            
+            return RemoveWordsIfNoResults(rawValue: value)
         }
         set {
             self["removeWordsIfNoResults"] = newValue?.rawValue

    /// option is useful if you want to avoid as much as possible false positive.
    public var typoTolerance: TypoTolerance? {
        get {
            if let value = self["typoTolerance"] {
                return TypoTolerance(rawValue: value)
            } else {
                return nil
            }
        }
        set {
            self["typoTolerance"] = newValue?.rawValue

    /// - `prefixNone`: no query word is interpreted as a prefix. This option is not recommended.
    public var queryType: QueryType? {
        get {
            guard let value = self["queryType"] else { return nil }
            
            return QueryType(rawValue: value)
        }
        set {
            self["queryType"] = newValue?.rawValue
