Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

Table of Contents

Overview

This API allows you to create /update fields a field in Hawksearch dashboard and manage the field configurations.

Example use case: Create a Brand field that can be used as a facet filter and to query index.

Request: POST request to the API below:

Expand
Code Block
languagejson
POST /api/

...

v10/field HTTP/1.1
Host: 

...

dashboard-na.hawksearch.com
X-HawkSearch-ApiKey: USE_YOUR_API_KEY
Cache-Control: no-cache
Postman-Token: cd457184-4c00-a650-62f2-530f22a9a384

{
    "FieldId": 0,
    "SyncGuid": "00000000-0000-0000-0000-000000000000",
    "Name": "brand",
    "FieldType": "facet",
    "Label": "Brand",
    "Type": "String",
    "Boost": 1,
    "FacetHandler": 0,
    "IsPrimaryKey": false,
    "IsOutput": true,
    "IsShingle": false,
    "IsBestFragment": false,
    "IsDictionary": false,
    "IsSort": false,
    "IsPrefix": false,
    "IsHidden": false,
    "IsCompare": false,
    "SortOrder": 0,
    "PartialQuery": "",
    "IsKeywordText": true,
    "IsQuery": false,
    "IsQueryText": false,
    "SkipCustom": false,
    "StripHtml": false,
    "MinNGramAnalyzer": 2,
    "MaxNGramAnalyzer": 15,
    "CoordinateType": 0,
    "OmitNorms": false,
    "ItemMapping": "",
    "DefaultValue": "",
    "UseForPrediction": false,
    "CopyTo": "",
    "Analyzer": "",
    "DoNotStore": false,
    "Tags": "",
    "Iterations": [
        1
    ],
    "AnalyzerLanguage": "",
    "PreviewMapping": null,
    "OmitTfAndPos": false,
    "CreateDate": "02-04-2021",
    "ModifyDate": "02-04-2021"
}

Response: The response is an array of field objects, every field object being a series of key-value pairs. Description of the data is as follows:

No

Key

Description

Value Type

1

FieldId

The unique identifier of the field (unique across the whole system)

Number

2

SyncGuid

Internal field

GUID

3

Name

Name unique to an engine (can be the same for one or more engines)

lowercase alphanumeric string with underscores allowed

4

FieldType

One of the below field configuration options:

Field Values are NOT stemmed - keyword or facet (facet if there is a corresponding facet else keyword)
Field values are ONLY stemmed (search only) - text
Field Values indexed “as is” AND are stemmed - keyword or facet (facet if there is a corresponding facet else keyword)
Stored only, not used for search or facets - unindexed

One of the 4 possible values -

facet
keyword
unindexed
text

5

Label

Display name of the field

Alphanumeric string

6

Type

Datatype of the field

One of the 3 possible values -

Single
Numeric
String

String, Single, Boolean, Datetime, GeoPoint

7

Boost

Boost value set on the field

Number between 1 and 200, inclusive

8

FacetHandler

Internal handler associated with the field

Alphanumeric

9

IsPrimaryKey

Flag to set as primary field

Boolean

10

IsOutput

Flag to control presence in response

Boolean

11

IsShingle

Corresponds to Add phrases to "Did you Mean"? under the field settings on the dashboard

Boolean

12

IsBestFragment

Flag controls creating synopses for large textual content

Boolean

13

IsDictionary

Flag to include field for autocorrect suggestions

Boolean

14

IsSort

Flag to allow sorting on search results page

Boolean

15

IsPrefix

Flag to indicate if the field is a prefix type. (This is obsolete, please set PartialQuery property to partial instead)

Boolean

16

IsHidden

Flag to control query builder configuration for the field

Boolean

17

IsCompare

Flag to manage comparison display

Boolean

18

SortOrder

Sort order of the field

Numeric

19

PartialQuery

Query type for the field

None, Prefix or Wildcard

20

IsKeywordText

Indicates that the field values indexed ""as is"" AND are stemmed

Boolean

21

IsQuery

Flag to allow querying on the field

Boolean

22

IsQueryText

Flag to show query text value

Boolean

23

SkipCustom

Flag to control display in custom group

Boolean

24

StripHtml

Flag to remove html content

Boolean

25

MinNGramAnalyzer

Minimum value for ngram analyzer (for queryable fields)

Numeric, 2 to 15 inclusive

26

MaxNGramAnalyzer

Maximum value for ngram analyzer (for queryable fields)

Numeric, 2 to 15 inclusive

27

CoordinateType

Used for latitude and logitude

Alphanumeric

28

OmitNorms

Flag to enable/disable smaller document to score higher

Boolean

29

ItemMapping

Field mapping value

Fieldname

30

DefaultValue

Value to show when empty

Alphanumeric

31

UseForPrediction

Flag to indicate that field is used in Recs

Boolean

32

CopyTo

List of fields to copy values into (redundancy)

List of alphanumeric fieldnames

33

Analyzer

Corresponds to the drop down list of Analyzers to be chosen

Alphanumeric

34

DoNotStore

Flag to control storage (helps to increase performance by reducing index size)

Boolean

35

Tags

Engine-wide labels (avilable acros complete dashboard)

Comma separated alphanumeric string

36

Iterations

Query iterations

Array of numeric values

37

AnalyzerLanguage

Natural language choice for query analyzer

Alphanumeric

38

PreviewMapping

Available for API indexing enabled engines

Fieldname

39

OmitTfAndPos

Flag to omit term frequency

Boolean

40

CreateDate

Field creation date

Date string in MM-DD-YYYY format

41

ModifyDate

Field modification date

Date string in MM-DD-YYYY format

Expand
Code Block
languagejson
{
    "FieldId": 479976,
    "SyncGuid": "1a0db291-d004-4cfa-a894-1ac8cadbe110",
    "Name": "Brand",
    "FieldType": "facet",
    "Label": "brand",
    "Type": "String",
    "Boost": 1,
    "FacetHandler": 0,
    "IsPrimaryKey": false,
    "IsOutput": true,
    "IsShingle": false,
    "IsBestFragment": false,
    "IsDictionary": false,
    "IsSort": false,
    "IsPrefix": false,
    "IsHidden": false,
    "IsCompare": false,
    "SortOrder": 11,
    "PartialQuery": "",
    "IsKeywordText": false,
    "IsQuery": false,
    "IsQueryText": false,
    "SkipCustom": false,
    "StripHtml": false,
    "MinNGramAnalyzer": 2,
    "MaxNGramAnalyzer": 15,
    "CoordinateType": 0,
    "OmitNorms": false,
    "ItemMapping": "",
    "DefaultValue": "",
    "UseForPrediction": false,
    "CopyTo": "",
    "Analyzer": "",
    "DoNotStore": false,
    "Tags": "",
    "Iterations": [
        1
    ],
    "AnalyzerLanguage": null,
    "PreviewMapping": null,
    "OmitTfAndPos": false,
    "CreateDate": "03-08-2021",
    "ModifyDate": "03-08-2021"
}

Best Practices

REST URL: https://dev.hawksearch.net/api/v9/Field

Method: POST

Authentication: Basic (Engine API Key)

  1. When creating a new field, you need to make sure that the following attributes are always sent in the request payload otherwise the request would be invalid.

Expand
Code Block
  {
        "Name": "age",
        "FieldType": "keyword",
        "Type": "String",
        "Label": "Age",
        "Boost": 1,
        "IsPrimaryKey": false,
        "IsOutput": false,
        "IsShingle": false,
        "IsBestFragment": false,
        "IsDictionary": false,
        "IsSort": false,
        "IsPrefix": false,
        "IsHidden": false,
        "IsCompare": false,
        "IsKeywordText": false,
        "IsQuery": false,
        "IsQueryText": false,
        "SkipCustom": false,
        "StripHtml": false
    }

...

2. Please make sure that the field ‘Name’ is unique and a field with the same name does not exist already. You can first get a list of all fields using ‘/api/v9/FieldInfo’ or get this particular field information using field name 'api/v9/Field?fieldName={fieldName}' before creating a new field

...

3. The ‘Fieldtypecan only have one of the 4 possible values (refer to Best Practices section below):

  • facet

  • keyword

  • unindexed

  • text


  1. Multiple fields can have the same ‘Label’ value as long as the Name is unique.

  2. Boost has to be set to 1 when IsQuery=false

    Image Added

  3. IsPrimaryKey should be always set to ‘false’ unless you want to mark that field as a Primary Key. Note that only one field can be a Primary key and it is suggested to NOT change it often as it might have a negative impact on site functionality. Please contact Hawksearch if you would like to change the Primary key.

  4. IsOutput should be set to ‘true’ only if you need the field value in the search response. Please always set it to ‘false’ if not in use.

  5. IsShingle corresponds to Add phrases to "Did you Mean"? under the field settings on the dashboard. It has to be set to false when IsQuery=false.

  6. If IsQuery=true, then IsShingle can be set to true only for "Type": "string". You can not use it for types ‘Numeric’ or ‘Boolean’.

  7. If IsQuery=true, then IsShingle can be set to true only for "FieldType": "facet", “keyword” and ”keywordtext”. You can not use it for field types ‘unindexed’, ‘text’.

    {keyword, "Field values indexed ""as is"" AND are stemmed"} >> “IsKeywordText will be set to 1” ,
    {keyword, "Field values are NOT stemmed"}>> “IsKeywordText will be set to 0”,
    {text, "Field values are ONLY stemmed (search only)"},
    {unindexed, "Stored only, not used for search nor facets"},
    {facet, "Field values are NOT stemmed"}} >> The field type value changes to ‘facet’ from ‘keyword’ if you set up this field as a facet. For fields that will be used as facet, please set up field type as ‘facet’.

  8. Iterations can be skipped from the request but if IsQuery=true, IsShingle = true then we need to set the Iterations value by default to 1.

    Image Added

  9. Type is the datatype of the field. One of the 3 possible values is String, Single, Boolean. If you set a field as IsQuery=true and IsShingle = true then you need to always pass the Type information in the request as IsShingle cannot be used for types ‘Numeric’ or ‘Boolean’.

  10. SortOrder field is optional and can be passed if you would like to maintain a specifc order for all the field values. The value should always be numeric.

...