SoftLayer对象存储API:搜索结果不正确


SoftLayer Object Storage API: Search results are incorrect

我尝试将软层对象存储与api客户端一起使用。软层对象存储php

我的目标是按文件名进行搜索,并查看该文件是否存在。

单字节文件名(例如.jpg)的正确结果。多字节文件名(日本語.jpg)不是正确的结果。

我的容器是photo,没有子目录。

sjc01/photo/a.jpg  
sjc01/photo/日本語.jpg  
sjc01/photo/multibyte_filename.jpg  
sjc01/photo/anytime with space.jpg  
...  

低于代码

<?php
    include('/includes/lib/ObjectStorage/Util.php');
    $tokenStore = ObjectStorage_TokenStore::factory('file', array('ttl' => 3600, 'path' => '/tmp/objectStorage'));
    #give the write permission in /tmp/objectStorage
    ObjectStorage::setTokenStore($tokenStore);
    $host = 'https://sjc01.objectstorage.softlayer.net/auth/v1.0';
    $username='SLXXXXXXXXXXX';
    $password='XXXXXXXXXXXXX';
    $options = array('adapter' => ObjectStorage_Http_Client::SOCKET, 'timeout' => 10);
    $objectStorage = new ObjectStorage($host, $username, $password, $options);
    $containerList = $objectStorage->with('photo')
                            ->setContext('search')
                            ->setFilter('type', 'object')
                            ->setFilter('q.name', "multibytefilename.jpg")
                            ->setMime('json')
                            ->get();
    var_dump($containerList);

结果objectCount 100不正确。我希望反对计数1。

返回值部分的末尾。

["context":protected]=>  
string(6) "SEARCH" 
["containerCount":protected]=>  
int(0)  
["objectCount":protected]=>  
int(100)  

我需要存在的状态
有人有什么想法或正确的方法吗
非常感谢。

我认为您的查询返回了所有对象.jpg。试试这个:

$containerList = $objectStorage->with('test')
                            ->setContext('search')
                            ->setFilter('type', 'object')
                            ->setFilter('q.name', "a.jpg")
                            ->setMime('json')
                            ->get();
    var_dump($containerList);

如果我没有错,你需要指定要查找的属性(在这种情况下是名称)

这里有更多关于可以在查询搜索中使用的字段的信息。http://sldn.softlayer.com/article/API-Operations-Search-Services

我希望它能帮助你。