PHRAS-483_SHA-UID_master

add index (not analysed) & search on fields "sha256" and "uuid"
e.g. : uuid:"4d006e01-bc38-4aac-9a5b-2c90ffe3a8a2"
e.g. : sha256:a7f3ec01c4c5efcadc639d494d432006f13b28b9a576afaee4d3b7508c4be074
This commit is contained in:
Jean-Yves Gaulier
2018-04-26 17:35:01 +02:00
parent 8a8577c59e
commit 3f785e7ba3
5 changed files with 26 additions and 2 deletions

View File

@@ -28,6 +28,8 @@
// Rest // Rest
%token database database %token database database
%token collection collection %token collection collection
%token sha256 sha256
%token uuid uuid
%token type type %token type type
%token id id|recordid %token id id|recordid
%token created_on created_(on|at) %token created_on created_(on|at)
@@ -86,6 +88,8 @@ match_key:
#native_key: #native_key:
<database> <database>
| <sha256>
| <uuid>
| <collection> | <collection>
| <type> | <type>
| <id> | <id>
@@ -169,6 +173,8 @@ keyword:
| <or> | <or>
| <database> | <database>
| <collection> | <collection>
| <sha256>
| <uuid>
| <type> | <type>
| <id> | <id>
| <created_on> | <created_on>

View File

@@ -8,6 +8,8 @@ class NativeKey implements Key
{ {
const TYPE_DATABASE = 'database'; const TYPE_DATABASE = 'database';
const TYPE_COLLECTION = 'collection'; const TYPE_COLLECTION = 'collection';
const TYPE_SHA256 = 'sha256';
const TYPE_UUID = 'uuid';
const TYPE_MEDIA_TYPE = 'media_type'; const TYPE_MEDIA_TYPE = 'media_type';
const TYPE_RECORD_IDENTIFIER = 'record_identifier'; const TYPE_RECORD_IDENTIFIER = 'record_identifier';
@@ -24,6 +26,16 @@ class NativeKey implements Key
return new self(self::TYPE_COLLECTION, 'collection_name'); return new self(self::TYPE_COLLECTION, 'collection_name');
} }
public static function sha256()
{
return new self(self::TYPE_SHA256, 'sha256');
}
public static function uuid()
{
return new self(self::TYPE_UUID, 'uuid');
}
public static function mediaType() public static function mediaType()
{ {
return new self(self::TYPE_MEDIA_TYPE, 'type'); return new self(self::TYPE_MEDIA_TYPE, 'type');

View File

@@ -61,8 +61,8 @@ class RecordIndex implements MappingProvider
// Collection name (still indexed for facets) // Collection name (still indexed for facets)
$mapping->addStringField('collection_name')->disableAnalysis(); $mapping->addStringField('collection_name')->disableAnalysis();
$mapping->addStringField('uuid')->disableIndexing(); $mapping->addStringField('uuid')->disableAnalysis();
$mapping->addStringField('sha256')->disableIndexing(); $mapping->addStringField('sha256')->disableAnalysis();
$mapping->addStringField('original_name')->disableIndexing(); $mapping->addStringField('original_name')->disableIndexing();
$mapping->addStringField('mime')->disableAnalysis(); $mapping->addStringField('mime')->disableAnalysis();
$mapping->addStringField('type')->disableAnalysis(); $mapping->addStringField('type')->disableAnalysis();

View File

@@ -34,6 +34,8 @@ class NodeTypes
const TOKEN_RAW_STRING = 'raw_quoted'; const TOKEN_RAW_STRING = 'raw_quoted';
const TOKEN_DATABASE = 'database'; const TOKEN_DATABASE = 'database';
const TOKEN_COLLECTION = 'collection'; const TOKEN_COLLECTION = 'collection';
const TOKEN_SHA256 = 'sha256';
const TOKEN_UUID = 'uuid';
const TOKEN_MEDIA_TYPE = 'type'; const TOKEN_MEDIA_TYPE = 'type';
const TOKEN_RECORD_ID = 'id'; const TOKEN_RECORD_ID = 'id';
const TOKEN_CREATED_ON = 'created_on'; const TOKEN_CREATED_ON = 'created_on';

View File

@@ -346,6 +346,10 @@ class QueryVisitor implements Visit
return AST\KeyValue\NativeKey::database(); return AST\KeyValue\NativeKey::database();
case NodeTypes::TOKEN_COLLECTION: case NodeTypes::TOKEN_COLLECTION:
return AST\KeyValue\NativeKey::collection(); return AST\KeyValue\NativeKey::collection();
case NodeTypes::TOKEN_SHA256:
return AST\KeyValue\NativeKey::sha256();
case NodeTypes::TOKEN_UUID:
return AST\KeyValue\NativeKey::uuid();
case NodeTypes::TOKEN_MEDIA_TYPE: case NodeTypes::TOKEN_MEDIA_TYPE:
return AST\KeyValue\NativeKey::mediaType(); return AST\KeyValue\NativeKey::mediaType();
case NodeTypes::TOKEN_RECORD_ID: case NodeTypes::TOKEN_RECORD_ID: