Quickstart
Getting started with Objective Search requires the following steps:
- Add data: Add data to the Object Store
- Create Index: Build an Index using the data
- Search Index: Querying the Index to get results
Setup
For this quickstart we'll be using the Objective SDK. First, get an API key and install the SDK.
To get an API key, sign up.
If you already have an account, you can find your API key on the API Keys page.
Install the Objective SDK
See SDKs for more SDK options.
Install SDK
pip3 install --upgrade "objective-sdk==5.6.0" requests
Adding data
Push Objects to the Object Store using the Batch API.
Adding data
import json
import requests
from objective import Objective
client = Objective(api_key='sk_YOUR_API_KEY')
data = json.loads(requests.get("https://d11p8vtjlacpl4.cloudfront.net/demos/ecommerce/hm-10k.json").text)
batch_size = 100
for i in range(0, len(data), batch_size):
batch = data[i:i+batch_size]
client.objects.batch(
operations=[{"method": "PUT", "object_id": str(obj.get("article_id")), "object": obj} for obj in batch]
)
print(f"\rUpserted {i+batch_size} objects...", end="", flush=True)
print("\nUpsert complete!")
Building an Index
Build an index out of the Objects pushed to the API. This will create an Index and add all of the Objects in the Object Store to it, making them searchable. For more details on configuring indexes, see Configuring Indexes.
Building an Index
from objective import Objective
from objective.types.index_create_params import Configuration, ConfigurationIndexType, ConfigurationFields
client = Objective(api_key='sk_YOUR_API_KEY')
index = client.indexes.create(
configuration=Configuration(
index_type=ConfigurationIndexType(
name="multimodal",
),
fields=ConfigurationFields(
searchable={
"allow": [
"prod_name",
"colour_group_name",
"detail_desc",
"department_name",
"garment_group_name",
"index_group_name",
"perceived_colour_master_name",
"perceived_colour_value_name",
"product_type_name",
"product_group_name",
"section_name"
],
},
crawlable={
"allow":[
"image_url"
]
},
filterable={
"allow": [
"department_name",
"price"
]
},
types={
"department_name": "string",
"price": "int",
},
)
),
)
print(f"Index {index.id} is has been created!")
Querying results
Querying results
from objective import Objective
client = Objective(api_key="sk_YOUR_API_KEY")
search_response = client.indexes.search(
index_id="idx_YOUR_INDEX_ID",
query="red dress",
object_fields="*"
)
print(search_response.to_json())
Learn more at these links:
- managing data via the Object Store APIs
- configuring indexes via the Index APIs
- searching and filtering via the Search API
For help or to ask a question, email us: [email protected].