小马宝莉吧 关注:101,487贴子:3,405,994
  • 15回复贴,共1

Derpibooru标签字段:Tag Namespace的介绍

只看楼主收藏回复

之前发了一个Derpibooru官方的搜索句法帮助,里面专门提到,这个帮助不列举Tag Namespace。然而,像是artist,comic这些Tag Namespace还是大有用处、不得不介绍的。
这篇帖子就列举一下常见的Tag Namespace,然后谈谈关于Tag Namespace怎么使用,以及它和句法帮助里提到的“metadata”有什么区别(这是很容易混淆的)——算是个官方句法帮助的DLC(
(注意时效性,注意有的搜索示例会出现-safe图,本帖仅分享个人经验,若有错误/补充欢迎指出)

楼下分节发


IP属地:广东1楼2024-01-14 02:31回复
    首先说一下什么叫做Tag Namespace:
    一个标签(如artist:shinodage),像是一个图片一样,也有便于利用的字段的。比如:有什么别名(aliases),它的类别是什么(category,如:“origin”),它的命名空间叫什么(tag_namespace,如:“artist”)等等:

    想了解完整定义,请参考:derpibooru站的 /pages/api 页面的“Tag Responses”一节。
    Tag Namespace就是其中一个重要的属性,在Derpibooru的实际搜索中经常用到该字段。比如说,在搜索oc:bay breeze时,是搜索一个名叫:"oc:bay breeze"的东西,而这个名字指定了标签,其namespace为"oc",而name_in_namespace为"bay breeze",而且非常重要的是,这个搜索指定了"oc:bay breeze"这样一个标签name。


    IP属地:广东2楼2024-01-14 02:33
    收起回复
      那么,我们一般用的比如"uploader:k_a","id:3278464"这些,算是Tag Namespace的使用吗?
      请注意,不是。这些就是句法帮助的“Supported Fields”一节里提到的metadata,它们不与任何标签相关。
      所以,知道Tag Namespace有什么用?
      比如,这时,我们就可以知道为什么"*bay breeze"或者"*:bay breeze"能返回对应一些bay breeze的相关结果,而偷懒的"??:watched"其实是不会包括你全部的watched的图片的。


      (解释:*bay breeze是通配到了oc:bay breeze的,这个标签的name是被该搜索包括的,于是可以放心地知道:它会返回oc:bay breeze的结果;而??:watched,虽然正则语义上包括my:watched,然而该name是不能匹配的,因为my不是Tag Namespace)
      确保搜索的是Tag Namespace可以避免相当多的错误。但这里有一个很有趣的小问题:为什么可以通过faved_by:?来匹配单字符用户名的用户faved的图片,用sha512_hash:*000000*看看哪些幸运图片的sha512散列值里包括了连续6个0,而不能用id:*1来查看id是1结尾的图片呢?这里可都没有违反上面说的试图通配的需要是Tag Namespace(通常成为name的前缀)。根据报错可以知道,这可能是搜索句解释器的问题:使用id时,解释器非要你输入整数不可/使用create_at时,解释器非要你输入一个日期格式不可,而不是帮你通配一些整数/日期或时间,而要求输入Literal的faved_by和sha512_hash就不会存在这个问题……保证是在用Tag Namespace,匹配的是name(也许或者Literal),就肯定没问题,搜索oc:bay*也是完全可以的。
      (可恶,为什么不行,我就想通过规定id来达到每隔100/50/10/5/2张图片看一个的效果之类的x)


      IP属地:广东3楼2024-01-14 02:36
      收起回复
        不知道文字触发了什么


        IP属地:广东6楼2024-01-14 02:40
        回复
          最后,来点TAG搜索实用小贴士:
          1. 如果想要搜一个可能有Tag Namespace的tag,比如zedwin,一个简单直接的方法是搜索*zedwin,这当然包括了预期的oc:zedwin;

          2. 如果就是想知道zedwin的Tag Namespace有哪些,那就点开标签搜索,搜name_in_namespace:zedwin,可以看到,zedwin是可以在artist下,也可以在oc下的,甚至包括一个Tag Namespace为null的标签(不知道做什么用,也不是个别名);

          3. 在不定义Tag Namespace的情况下,Tag Namespace是null——这些namespace为null的标签不能通过namespace:null的搜索得到,可以搜索-namespace:*?来得到预期结果,其它字段同理;



          IP属地:广东7楼2024-01-14 02:41
          收起回复
            额外补充个4. 如果你希望找到类似这样的图片:小蝶所有的CP图,这可难办了!
            ——如果搜索shipping,fs,那么万一是有小蝶在场的稀有苹果图怎么办(比如说id:1923083)?
            搜索ship:*shy*也不行,毕竟,也有CP里是带shy字的(如:ship:shys),也不是所有小蝶CP里都带shy字(如flutterspike)。
            这时候得去标签搜索里由implies:shipping,implies:fluttershy搜到所有小蝶的CP的tag


            然后按这些tag写一个超大的析取式……(合理使用自动化工具可以帮你快速完成这事)这样才能得到结果(虽然不排除某些冷门/新晋CP未被收录或是忘了加shipping/fluttershy的imply)。
            考虑到复杂性,也许就例子中的问题来说,shipping,fs,ship:*shy*是个很好的近似,而很多其它情况,是需要利用起implies提供的额外关系来完成搜索的。
            (如果呆站实装这种搜索就好了


            IP属地:广东8楼2024-01-14 02:43
            回复
              呆站领域大神


              IP属地:上海来自Android客户端9楼2024-01-14 08:42
              回复
                好好好


                IP属地:广东来自Android客户端10楼2024-01-14 08:52
                回复


                  IP属地:湖南通过百度相册上传11楼2024-01-14 09:17
                  回复
                    泻药,但是我看不懂


                    IP属地:广东来自Android客户端12楼2024-01-14 11:26
                    回复


                      IP属地:广东来自Android客户端13楼2024-01-14 12:24
                      回复
                        没什么特殊需求的话感觉Quick tags,*_*,score.gt:,外加一些特殊字符就够用了(¦3[▓▓]


                        IP属地:重庆来自Android客户端14楼2024-01-14 20:01
                        回复