文脉·艺文类聚

首页 › 析疑

析 疑

57 个问题,按 10 类归:部序与体例、门类归属、名物与制度、 引书与史源、文体与编纂、撰人与文学史、纪年、异文校勘、版本阙佚与检索缺口。

帝王作者里,梁元帝一百二十七篇、魏文帝七十四篇都很高,梁武帝却只有十二篇,为什么差这么多?

库中梁简文帝二百七十六篇、梁元帝一百二十七篇、魏文帝七十四篇,而梁武帝只有十二篇,唐太宗仅三篇(作「太宗皇帝」「太宗文皇帝」)。同为帝王,差距不在身份,而在作品与题材:梁简文帝、梁元帝都有大量咏物诗赋,题材细到扇、伞、镜、灯、马、莲,正合类书按物立门的需求;魏文帝的赋、书、诏也多涉器物与制度。梁武帝的作品以诏令、佛理文字为主,可摘入类目的咏物之作少,故引用少。唐太宗三篇则是因为《艺文类聚》成书于武德年间,太宗尚未即位,书中偶见的「太宗皇帝」当是后来补入或底本混入,数量自然极少。这条差异提醒读者:类书引谁多,不等于谁的地位高,而等于谁的作品更适合按门摘录。若用撰人榜排名去写文学史,会把咏物诗人抬得过高,把诏令作者压得过低。唐太宗只有三篇,还有一个版本原因:本书成于武德年间,太宗尚未即位,书中出现的「太宗皇帝」当是后来补入或底本混入,数量自然极少。若把这三篇当作唐太宗在本书中的全部作品,会误解本书的成书时间与编纂层次。帝王作者的多寡还与他们是否咏物有关:梁简文帝、梁元帝、魏文帝都有大量咏物赋,题材可拆入门;梁武帝多诏令、佛理文字,可拆入门者少。可见作者身份不如题材适配更能解释引用量,这一点在类书统计里尤其重要。帝王作者榜的差异也说明:类书的「作者」是作品供应者,不是历史地位排序;以榜论史,最容易把咏物之作当成一代文学的主流。帝王作者榜因此只能作参考,不能作文学史结论;真正的结论,要回到具体门类与作品。

陶潜在库里只有十七篇,比梁简文帝少得多,这符合文学史印象吗?

库中「宋陶潜」十七篇,集中在卷第三十六、三十七人部隐逸上下,以及卷若干咏物门。与梁简文帝二百七十六篇相比,数量很小,但这并不奇怪:陶潜存世作品本就不多,诗不足一百三十首,文十余篇,且题材集中于田园、饮酒、拟古、行役,能按类书门目摘入的更少;梁简文帝则是咏物大户,恰好对类书胃口。更重要的是,唐初对陶潜的评价尚未到宋代以后的地位,编者取陶诗,多用于隐逸、高士、饮酒、归田一类门,不会像后世选本那样大面积收录。因此十七篇不是「遗漏」,而是按门取材的结果。读者若想从类书看陶潜,应去隐逸门、酒门、菊门、松门等具体门类,而不是指望他在撰人榜前列。反过来说,十七篇中若有他书不存的句子,其辑佚价值反而高于高产作者的一般篇目。陶潜十七篇的分布也值得看:多在隐逸、高士、酒、菊、松一类门,正对应他的田园与隐逸形象。类书按门取人,往往把一位作者类型化,只保留与门类相符的一面。研究陶潜的接受史,这些门类分布比篇数更有信息量。陶潜篇数少,还与唐初的陶诗接受有关:陶诗在梁陈已受重视,但尚未到宋代那样被奉为典范;类书取陶诗,多按隐逸、酒、菊等门摘句,不做全面收录。十七篇是按门取句的结果,不是唐初只知陶诗十七篇。陶潜的例子还说明,类书对作者的呈现是门类化的:同一位诗人被拆到隐逸、酒、菊等门,读者需把各门合看,才见其全貌。把陶潜各门合看,可以看到一个被类书分门的诗人形象,与后世全集本的形象并不相同。陶潜的例子说明,类书的作者形象是按门类拼出来的。

卷第五十八「砚」门从「砚之书」写到「漆石砚」,这一门的材料是按什么层次铺开的?

砚门首条是「太公金匮曰.砚之书曰.石墨相著.邪心谗言.无得污白」,以托名太公的砚铭起;接着「汉书曰.宣帝时.中郎将张彭祖.少与帝微时同席砚书」,讲砚与人物的关系;再「崔寔四民月令曰.正月砚冻释.命童幼入小学篇章」,讲砚与学令、时令;再「魏武帝上杂物疏曰.御物有纯银参带台砚一枚」,讲御用砚的形制;再「东宫旧事曰.皇太子初拜.给漆石砚一枚」,讲东宫制度。五条材料从铭、史事、月令、御物、东宫制度依次展开,正好是类书「事」部的典型层次:先训释与铭文,再人物典故,再制度器物。读者若只把砚门当作文房清玩,会漏掉后两条的制度信息:银砚、漆石砚不是鉴藏,而是御物与东宫仪注的一部分。名物门类在类书里往往兼有三层,即物之名、物之用、物之制,读时按这三层拆,材料才不乱。砚门五层的顺序还可与卷五十八的笔、纸门对读:笔门多收制笔、赐笔、笔铭,纸门多收纸谱、赐纸、纸赋,砚门则多收砚铭、砚制、东宫给砚。三门的材料层几乎平行,说明文房器物在类书里是按铭—故事—制度同一模板编排的。砚门的五层还可以反过来读:从铭文到制度,材料的时间跨度从托名太公一直到东宫旧事,编者不加区分地并列,说明类书的时间轴是事类轴而非年代轴。读者若按年代排序读,会觉得材料跳跃;按层次读,则脉络清楚。砚门五层里最容易被忽略的是月令一层:崔寔四民月令讲正月砚冻释、十一月砚冻,把文房器物写进了农事历,这是类书特有的时间感。月令一层把砚写进农事历,正说明类书的时间不是编年,而是按门类循环的岁时。

「谷」门为什么先讲九州宜种,再讲九谷之名?这两层是农书还是制度?

谷门第二条引「周官曰.杨州荆州宜稻.豫州宜种麦.青州宜稻麦.兖州宜三种.雍州宜黍稷.幽州三种.冀州宜黍稷.并州宜五种」,夹注解释「五种.黍稷菽麦稻.三种.黍稷稻」;第三条引「太宰.九职任万民.一曰三农.生九谷」,夹注「黍稷秫稻麻大小麦」。前一条是《周礼·职方氏》的九州宜种,讲的是土地与作物配置;后一条是《周礼·太宰》的九职,讲的是农事作为国家职任。两条都不是农书技术,而是制度文本:一条定地理,一条定职官。类书把它们放在「谷」门开头,等于先立谷为何物、由谁种、种于何地的制度框架,再往下才收禾、稻、黍、粟、豆、麻、麦各门的博物与故事。这也解释了为什么谷门不先收《齐民要术》一类农书,而先收《周礼》:类书的「事」优先取经典制度,农书材料反而在后。读者若按农学史去找,会先读到一堆职官与州域,需要耐心读到后面的作物门才有技术细节。谷门之后的禾、稻、秔、黍、粟、豆、麻、麦各门,才进入具体的作物名与故事。也就是说,谷门是总纲,分门是子目,这与山部「总载山」加分山的结构完全一致。读者查具体作物,应去分门;查五谷之制,才留在谷门。九州宜种一条还透露了类书的地理观:它按《周礼》的九州配置作物,而不是按唐代的实际行政区划。也就是说,类书收的是经典制度文本,不是当代农情。读者若拿它研究唐代农业,会错把经典理想当成现实。谷门总纲与分门的关系,也可以用来校验其他部:凡有「总载」门的部,都先立总纲再分目,读者可按此判断某门是总还是分。

旱门里既有「肥遗」这种六足四翼的蛇,又有「应龙」,灾异解释是怎么运作的?

旱门首条「春秋考异邮曰.旱之言悍也.阳骄蹇所致也」,先给「旱」下定义:旱是阳气骄蹇所致,属天人感应式的解释。第二条「山海经曰.泰华之上.削成而四方.有蛇名曰肥遗.六足四翼.见则天下旱」,用异兽出现作为旱的征兆。第三条「又曰.东荒北隅有山.名土丘.应龙处南极.杀蚩尤夸父.不得复上.故下数旱.旱而作龙应之.乃得大雨」,用神话解释旱的成因与祈雨的可能。三条材料分别对应三种解释模式:道德感应(阳骄)、征兆物象(肥遗)、神话因果(应龙)。类书把它们并置,不判断哪一种为真,而是把当时关于旱的全部话语收在一门。这也解释了紧随其后的「祈雨」门:既然旱有道德与神话两重解释,祈雨就既是人事补救,也是与神沟通。读者若用现代气象学去读,会觉得荒诞;若用灾异政治文化去读,这三条正是唐初天人之学的完整样本。旱门之后紧接祈雨门,收的是祷雨之礼与应龙、土龙一类祈雨法。旱与祈雨两门连排,构成灾—禳的完整单元。读者若只读旱门,会以为本书只记灾异;连读祈雨门,才看得出编者对灾异的处理是记其异,继以禳。旱门的三种解释模式还对应三种材料来源:道德感应多出纬书与春秋家,征兆物象多出山海经一类异书,神话因果多出淮南子、山海经。引书来源的差异,正好把三种解释模式分开,读时可按引书判断该条属于哪一模式。三种解释模式并非互斥,同一门内可以并存;读者若要研究某一种,应按引书来源筛选,而不是按门名筛选。按引书筛选解释模式,是一种可操作的读法,比按门名笼统归类更可靠。

芙蕖门里「荷」「芙蕖」「芙蓉」「菡萏」反复出现,一物多名该怎么读?

芙蕖门首条「尔雅曰.荷.芙蕖.其茎茄.其叶葭.其本蔤.其花菡萏.其实莲.其根藕.其中的.〈的.子也.〉的中薏」,一条就把整株荷的各个部位分了名:整株叫荷、芙蕖,茎叫茄,叶叫葭,本叫蔤,花叫菡萏,果实叫莲,根叫藕,莲子叫的,莲子心叫薏。第二条「广雅曰.菡萏.芙蓉也」,又说花有芙蓉之名。于是同一物在不同引书里有不同称法:荷、芙蕖是株名,芙蓉、菡萏是花名,莲有时指果实、有时又泛指。类书把这些训释并列,不是重复,而是保留同名异指的证据。读这类名物门,最忌把「芙蓉」一律当花、「莲」一律当株;应顺着训释的层级看:株—茎—叶—本—花—实—根—子,每一级都有自己的名。数据层不做同物异名合并,正是为了避免把「莲」的果实义与株义混为一谈。芙蕖门之后还有菱、蒲、萍、苔、菰、荻等门,都是水生或湿地植物,与药香草部的草木谱系相接。这说明门与门之间不仅按名物排,还按生境排:水生一类聚在一起,陆生草木另聚一处。读者按生境检索,比按字面检索更有效。一物多名的读法还可以推及全书:玉部的「马瑙」即玛瑙,草部的「署预」即薯蓣,鸟部的「鷰」即燕。底本用字多存古写,若按现代通行名检索,会大量漏检;建索引时应把古今异写、异体字一并收入。古今异写与异体字,是名物检索的第二道门槛;第一道是异名,第二道是异写。两道都过,检索才可靠。异名与异写两道门槛,也是古籍数字化的共通难题,本书只是把它具体化了。异体字表可以从本书的字频表反推,凡低频而形近的字,多半是异写。

全书只抽出七十三条纪年,是不是漏掉了很多年号?

库中 time_mention 一百零三条,相对于全书一千余段引文来说确实不多。原因有三:一是《艺文类聚》按类立门,不按年编年,绝大多数段落不以年号开头,纪年只作为叙事中的时间点出现;二是抽取采用年号白名单高置信口径,只认汉至唐初常见年号,凡年号不在白名单内、或形似年号而实为数目字的,一律不收;三是底本的纪年常写作「建武二年」「元封元年」这类简式,若前文没有句读隔开,正则不易判定边界。于是宁可少收,也不把一云八十这类数字误当纪年。读者若要查某年之事,不能只依赖 time_mention,还应在 FTS 中直接搜年号原文。反过来,七十三条纪年虽少,却条条可回原文,且都带门名与卷次,适合做类书中的时间点样本,而不适合做全书的年代统计。七十三条纪年里,汉魏年号占多数,唐初年号极少,这与本书的取材下限一致:类书主要收唐前材料,唐初只是零星补入。若发现唐初年号偏多,反而要怀疑底本是否混入了后人的增补。七十三条纪年的分布也值得看:多数集中在帝王部、职官部、礼部,因为这几部多收诏令、制度、人物生平;天部、地部、草木部几乎没有纪年,因为那些门收的是训释与咏物。纪年密度因此可作为判断门类性质的一个辅助指标。纪年密度还可以用来判断某卷的史料性质:纪年密集的卷多为史事,纪年稀疏的卷多为训释与咏物。纪年密度作为辅助指标,不能反推门类性质,只能提示该门偏史事还是偏训释。读者若要做全书年代研究,应另建专表,不能只靠这一层。

为什么纪年抽取要设年号白名单,不直接用正则抓「某某年」?

直接用正则抓某某年,会把大量非年号的结构抓进来。例如一云八十这类异文、「在位七十年」这类叙述、八十一年这类数目,都能匹配「某年」的模式,但都不是年号纪年。更麻烦的是,有些句子里的「元年」前面根本不是年号,而是「开元」这样的年号与「元年」黏连,或「高祖元年」这样的庙号加元年。库中最终只收一百零三条,靠的是白名单:先把汉至唐初常见年号列成表,再要求年号二字以上、出现在句读之后或段首,且前后没有「云」「曰」「在位」等干扰字。这样做的代价是漏收,好处是每一条都能回原文核实。类书的纪年层本来就稀疏,若为了数量放宽口径,会把整层变成噪声,反而无法用于任何研究。这也是全书统计的一条通则:宁可少收,不可错收。白名单也不是万全之策:有些年号只出现一次,白名单若漏收,就会整条丢失。当前七十三条是白名单内命中的口径,报告里另列疑似年号但未收的候选,供人工复核,而不是把候选直接入库。白名单之外还有一类半截年号,如「元封」被写成「元封中」元封后,正则只认「年」字,这类就会漏收。当前口径接受这种漏收,因为半截年号的时间精度本就不足,收进来也无法用于年代统计。白名单也可以反过来用:若某年号高频出现而名单漏收,就说明名单需要扩充;这比逐年人工检索高效。名单扩充之后,应重新跑一遍抽取,并把新增条目回原文核对,不能只信数字变多。名单扩充之后,新增条目的门类分布也要一并检查,防止偏收某一部。白名单的口径必须写清楚,否则数字会被误读成全书纪年总数。

库里的纪年为什么不换算成公元年份?

time_mention 表只存底本自报的年号、年次、月、日,不存公元年。原因有三:一是底本的纪年多为「建武五年」「元封元年」这类,本身不带月份的日子,若强行换算,会凭空补出并不存在的精度;二是同一门内往往并列不同朝代的年号,如卷第四十九太常门连引「武帝元鼎二年」「武帝元封四年」「孝武帝元朔元年」,这些「武帝」指汉武,若换算需先确认朝代,而底本并未明写;三是年号改元频繁,同一字在不同朝代重复,如「建武」既是东汉光武年号,也是西晋、后赵年号,脱离上下文换算极易错代。数据层因此只做原文照录,把换算留给使用者按上下文判断。若要换算,至少要先确定该段所属朝代与人物,再用年表对齐;这一步无法自动化,也不应在类书层强行完成。不换算公元还有一个实际好处:读者若按公元年检索,会得到一堆互相矛盾的年份,因为同一门里可能并列不同朝代的年号。保留原文年号,至少能保证每条纪年都能回到底本的句子,换算错误不会污染数据层。若一定要换算,建议另建一张纪年—公元对照表,并注明换算依据与不确定性,而不是把公元年直接写进 time_mention。这样既保留原文,又提供参考,两者不混。类书的时间层应做索引,不做定年。保留原文年号,还有一个学术伦理上的理由:类书的编纂者没有换算公元,后人也不应替他们补上这层解释。把换算留给读者,是类书数据层最克制也最负责的做法。这条原则同样适用于祥瑞、灾异一类带解释色彩的材料,只录不评。保留原文年号,也就保留了底本的纪年习惯。

为什么用两字词在库里搜不到,比如搜「兰亭」结果为0?

库中全文检索表 passage_fts 使用 trigram 分词,按连续三字建索引。因此三字以上的词可以直接 MATCH,如「桃花源」能命中三条;两字词如「兰亭」不入 trigram 索引,直接 MATCH 会返回 0。这不是库里没有「兰亭」,而是检索方式不对。两字检索应改用 LIKE,例如在 passage.text 上执行 like '%兰亭%';或者在 FTS 上先补一个字再搜,如兰亭序会稽兰。这一限制来自 SQLite 的 trigram 分词器设计,不是数据缺失。实际操作建议:三字以上用 FTS,两字用 LIKE,单字用 LIKE 并配合部、门过滤。另需注意底本用「.」作句读,FTS 索引里标点也占位,但 trigram 只按字符切,标点不参与匹配,所以不必先把「.」换成「。」再搜。两字检索还有一个替代办法:用 SQL 的 LIKE 配合部、门过滤,如先按 section_group 找到「兰」相关门,再在门内 LIKE 搜「兰亭」。这样既避开 trigram 的两字限制,又不会被全库噪声淹没。三字以上仍建议用 FTS,速度快且能排序。trigram 的两字限制还影响人名检索:两字人名如「陆机」「沈约」不能直接 MATCH,需用 LIKE 或加一字。三字以上的人名、书名、门名则可用 FTS。检索前先判断关键词长度,再选工具,能省很多无效查询。检索工具的选择,本质上是对数据形态的尊重;用错工具,不是数据坏了,而是方法不对。工具选对,检索才有意义;工具选错,先别怀疑数据。

第一次用这个库,最该先看哪几张表?按什么顺序查?

建议按骨架—段落—专题三层查。第一层看骨架:division 四十六行给出部序与卷范围,volume 一百行给出每卷的部序列与段数,section_group 七百余行给出门名、首末卷、门次数,section 给出每门在卷内的起止行。先读这三张,能迅速建立卷几属哪部、哪部有哪些门的地图。第二层看段落:passage 是原子表,字段有 vol_no、line、style、style_kind、text,按卷或门过滤即可取原文;entry 与 passage 一一对应,便于按 lead 检索。第三层看专题:citation 查引书,literary_piece 查撰人与篇题,editorial_note 查校记与异文,crossref 查事具某门,time_mention 查纪年,volume_note 查卷级校记。典型查法:先按门名找 section_group,拿到 group_id,再连 section 与 passage 取文;若查某书引用,直接按 book_title 过滤 citation,再回 passage 取上下文。切记 volume.division 只是卷首部名,卷内可能换部,跨部卷应以 divisions 字段为准。查引书时还有一条捷径:citation 表带 div_id,可先按部过滤,再看该部引了哪些书。例如查礼部引了哪些礼书,直接按 div_id 与 book_title 分组即可,不必逐段翻。查撰人同理,literary_piece 带 style 与 author,可先按文体过滤。

既然段是原子,为什么有些段落里能读出好几条互不相干的引书?

因为底本按行切段,而原书的条目边界在这类地方已经模糊。卷第四元正门有一条长段,从「孔丛子曰.邯郸民以正月旦献爵于赵王」起,中接「东观汉记曰.戴凭为侍中」,再接「汉书曰.鲍宣字子都」,三条各自完整却挤在一行;卷第五十八砚门也有类似情形,一段里可能先叙砚铭、再叙东宫制度。全库含两个以上X曰结构的段落有二千五百八十六段,占近两成。数据层坚持段为原子,是因为段能精确落到行号,可回底本核对;若强行在段内再切,就要重新判定条目边界,而底本本身没有给出边界标记,切错的风险高于不切。代价是 citation 只记段首书名,段内后续书名不入表,引书总量被低估。这一缺口已在报告中标明:citation 八千七百余条是段首口径,不是全书引书总数;需要段内全量引书时,应按X曰再扫一遍 passage.text,并接受边界判断带来的误差。段内多引的缺口还有一个补救办法:在报告里给出段内疑似多引的段落清单,读者可据此人工复核,而不必全库重扫。清单按段内X曰个数排序,多引越多的段越靠前,复核效率最高。段内多引的清单还可用来评估底本质量:多引段越集中,说明该卷的条目边界越模糊;若某几卷多引段特别多,那几卷的底本来源可能与其他卷不同。这与卷级校记的「宋本缺」标记可以互相印证。多引段清单若与卷级校记交叉,能看出底本拼合的痕迹:明本补入的卷,多引段往往更多。多引段与校记交叉,是判断底本拼合的一条旁证,值得在版本研究里单独列出。

每问的解答都落在具体部、门、卷、条目或原文句子上;答案由 AI 通读底本后整理, 结论以原文为准。