QPL Implementation for Azure
A QPL to Azure translator was implemented in PyQpl with most operators except for SPAN related ones. Azure Full query syntax is Lucene based but filters in Azure are OData filter expressions, which are also supported for the specific QPL operators.
Azure doesn't support single CRUD (Create, Update and Delete) operations. These operations need to be performed inside a bulk operation. Having said this, the Gaia implementation internally builds the bulk payload that Azure requires for operations such as Index Document, Delete, Update and Upsert.
Azure doesn't support updates or deletes by query. A two step process of query and then update/delete will need to be performed.
Boolean structures are not supported by Azure. A similar behavior can be achieved using the Lucene query syntax.
While Azure supports complex types of values up to an extent, inner hit transformation was not implemented in the Engine since the results in Azure include all nested values and can be queried within a normal query using Lucene syntax.
The current implementation of Azure AI Search does not support performing multiple index searches. A separate search needs to be done for each.
Azure does not support scroll search. Pagination in azure is done by using the regular top/skip arguments in the search request using the default results order and range filters as specified here:
Azure does not support index templates as a way to predefine the schema of automatically created indexes. Indexes will need to be created by an explicit call to the corresponding Engine method.
Vector queries were not implemented due to the fact that they can be performed
through semantic or hybrid queries using natural language and letting the search service do the embedding. The REST endpoint used for embedding in Azure is extremely slow and prone to throttling errors. If need be, an external direct call to the model can be done for text encoding.
Highlighting in Azure is not supported in hybrid search, only in full and semantic searches.
Spell checking in Azure AI Search can be performed when configured but it happens internally with no feedback to the user. This feature was not used because in some cases an apparent misspell might be intended by the user.