Skip to content

SearchTerm enhancements

Choose a tag to compare

@zozlak zozlak released this 11 Aug 10:40
· 166 commits to master since this release

Backward-incompatible changes:

  • acdhOeaw\arche\libRepoDb::getMetadataQuery(): QueryPart has been replaced with acdhOeaw\arche\libRepoDb::getMetadataStatement(): PDOStatement (this change allowed internal code reorganization so the SQL query used to fetch metadata is generated by one method - acdhOeaw\arche\libRepoDb::getPdoStatementBySqlQuery()).

New features:

  • acdhOeaw\arche\SearchTerm search values for object properties are matched against any target resource identifier (and not only its repository canonical URL)
  • acdhOeaw\arche\SearchTerm new value type SearchTerm::TYPE_ID introduced for instant search for resources with known internal repository id.
  • acdhOeaw\arche\SearchConfig generic metadata read mode {childrenDepth}_{parentsDepth}_{from}_{into} introduced. See the arche-core REST API documentation for details.
  • acdhOeaw\arche\SearchConfig provides array<string> $resourceProperties and array<string> $relativesProperties properties allowing to limit the set of RDF properties included in the search results. Filtering isn't applied to technical search properties.
  • acdhOeaw\arche\SearchConfig provides the bool $skipArtificialProperties property allowing to skip generation of technical search-related RDF properties.
  • acdhOeaw\arche\RepoResource::delete*() methods return an array of deleted resource URIs.
  • acdhOeaw\arche\libRepoDb::getPdoStatementBySqlQuery() generates technical triples containing values used for ordering.
  • acdhOeaw\arche\libRepoDb::getPdoStatementBySqlQuery() uses the most specific triple datatype for ordering making numbers and dates being ordered properly instead of according to their string serializations.

Bugfixes:

  • acdhOeaw\arche\SearchTerm handles array $value properly.
  • acdhOeaw\arche\SearchTerm properly recognizes the datatype $value is an array.

Performance optimizations:

  • acdhOeaw\arche\libRepoDb::getPdoStatementBySqlQuery(): uses get_relatives() and manual join with metadata/relations/identifiers tables instead of get_relatives_metadata() resulting in much better query execution speed (the gain is proportional to the number of resources matching the search)