The resources.Search class provides methods to perform searches.

Related quickstart notebook

Methods

Make a search request

Description: This method performs a search across a specific index based on the provided parameters and returns the first page of results.

Function signature and example:

1def query(
2 self,
3 index_id: str,
4 options: List[Literal["visual", "audio"]],
5 *,
6 query_text: str = None,
7 query_media_type: Literal["image"] = None,
8 query_media_file: Union[str, BinaryIO, None] = None,
9 query_media_url: str = None,
10 group_by: Optional[Literal["video", "clip"]] = None,
11 threshold: Optional[Literal["high", "medium", "low", "none"]] = None,
12 operator: Optional[Literal["or", "and"]] = None,
13 filter: Optional[Dict[str, Any]] = None,
14 page_limit: Optional[int] = None,
15 sort_option: Optional[Literal["score", "clip_count"]] = None,
16 adjust_confidence_level: Optional[float] = None,
17 **kwargs
18) -> models.SearchResult

Parameters:

NameTypeRequiredDescription
index_idstrYesThe unique identifier of the index to search.
optionsList[Literal["visual", "audio"]]YesSpecifies the sources of information the platform uses when performing a search.
query_textstrNoThe text query to search for. This parameter is required for text queries.
query_media_typeLiteral["image"]NoThe type of media you wish to use. This parameter is required for media queries. For example, to perform an image-based search, set this parameter to image.
query_media_fileUnion[str, BinaryIO, None]NoThe path to a media file or a file-like object to use as a query. This parameter is required for media queries if query_media_url is not provided.
query_media_urlstrNoThe publicly accessible URL of a media file to use as a query. This parameter is required for media queries if query_media_file is not provided.
group_byOptional[Literal["video", "clip"]]NoUse this parameter to group or ungroup items in a response.
thresholdOptional[Literal["high", "medium", "low", "none"]]NoFilter on the level of confidence that the results match your query.
operatorOptional[Literal["or", "and"]]NoLogical operator for combining search options.
filterOptional[Dict[str, Any]]NoAdditional filters for the search.
page_limitOptional[int]NoThe maximum number of results per page.
sort_optionOptional[Literal["score", "clip_count"]]NoThe sort order for the response.
adjust_confidence_levelOptional[float]NoThe strictness of the thresholds for assigning the high, medium, or low confidence levels to search results.
**kwargsdictNoAdditional keyword arguments for the request.

Return value: Returns a models.SearchResult object containing the search results.

API Reference: For a detailed description of each field in the request and response, see the Any-to-video search page.

Related guides:

Retrieve a specific page of search results

Description: This method retrieves a specific page of search results. This method provides direct pagination. Choose it mainly when the total number of items is manageable, or you must fetch a single page of results.

Function signature and example:

1def by_page_token(self, page_token: str, **kwargs) -> models.SearchResult

Parameters:

NameTypeRequiredDescription
pageTokenstrYesA token that identifies the page to retrieve.
**kwargsdictNoAdditional keyword arguments for the request..

Return value: Returns a models.SearchResult object containing the search results.

API Reference: For a description of each field in the request and response, see the Retrieve a specific page of search results page.

Related guides:

Iterative pagination

If your application must retrieve a large number of items, use iterative pagination. To retrieve the first page of results, invoke the query method of the search object. To retrieve subsequent pages of results, use the iterator protocol.

Python
1from twelvelabs.models.search import SearchData, GroupByVideoSearchData
2
3def print_search_data(data: SearchData):
4 print(f" Score: {data.score}")
5 print(f" Start: {data.start}")
6 print(f" End: {data.end}")
7 print(f" Video ID: {data.video_id}")
8 print(f" Confidence: {data.confidence}")
9 print(f" Thumbnail URL: {data.thumbnail_url}")
10
11def print_page(result):
12 # Print the search results
13 print("Search Results:")
14 for item in getattr(result, 'data', result):
15 if isinstance(item, GroupByVideoSearchData):
16 print(f"Video ID: {item.id}")
17 if item.clips:
18 for clip in item.clips:
19 print_search_data(clip)
20 else:
21 print_search_data(item)
22
23
24# Initial query
25search_results = client.search.query(
26 index_id="<YOUR_INDEX_ID>",
27 options=["visual", "audio"],
28 query_text="man laughing",
29 group_by="clip",
30 # threshold="medium",
31 operator="or",
32 # filter={"category": "nature"},
33 page_limit=2,
34 sort_option="score",
35 # adjust_confidence_level=0.5
36)
37
38# Print the search pool information
39print("Search pool:")
40print(f" Total count: {search_results.pool.total_count}")
41print(f" Total duration: {search_results.pool.total_duration}")
42print(f" Index ID: {search_results.pool.index_id}")
43
44# Print the first page
45print_page(search_results)
46
47# Print subsequent pages using the iterator protocol
48page_number = 2
49while True:
50 try:
51 print(f"Page {page_number}")
52 print_page(next(search_results))
53 page_number += 1
54 except StopIteration:
55 break
56
57print("No more results.")
Built with