看板: BudaTech ◎ 佛典电子化讨论 板主: HeavenChow |
阅读文章: 第 291/2032 篇 | 上篇 | 下篇 | 回覆 | 转寄 | 转贴 | m H d | 返回 |
发信人: b83050@ccstudent.ee.ntu.edu.tw (Post Gateway), 信区: BudaTech 标 题: Re: Search 子目录的功能已完成 发信站: 由 狮子吼站 收信 (Mon Nov 25 10:33:24 1996) 以下是单教授的指导: ---------- Forwarded message ---------- Date: Sun, 24 Nov 1996 15:35:31 +0800 From: Shann Wei-Chang <shann@math.ncu.edu.tw> > 能相当不简单,我试了一下,有底下两个问题: > 1.搜寻经名「般若」,会连译者中有「般若」者也报告出来,如下: > 经号 册 页码 经名(卷数)【朝代 译者或作者】(●:表示电脑缺字) > ==== == ===== ========== ================= > 0159 03 P0291 大乘本生心地观经(8卷)【唐 般若译】 > 0162 03 P0388 金色王经(1卷)【东魏 瞿昙般若流支译】 > 0220 05 P0001 大般若波罗蜜多经(600卷)(第1-200卷)【唐 玄奘译】 您所建议的, 只搜寻某些项目的资料, 而不搜寻其他项目的资料, 已经 超出了一般全文检索的设计□围. 这已经是资料库的搜寻了. 以目前来看, 要设计资料库似乎是太大的动作. 简单一点的设计, 或许如下: 大刚, 你现在是由一个 index 档来搜寻经名, 是吧? 若要将译者名字 剔除在搜寻□围之外, 就需要两个 index files. 你可以用 UNIX 内建的 relational database 功能. 比方说, 档案 index.a 如下 0159 03 P0291 大乘本生心地观经(8卷) 0162 03 P0388 金色王经(1卷) 0220 05 P0001 大般若波罗蜜多经(600卷)(第1-200卷) 档案 index.b 如下 0159 【唐 般若译】 0162 【东魏 瞿昙般若流支译】 0220 【唐 玄奘译】 注意 index.a 和 index.b 的第一个 column 的资料必须相符, 而且经过 sort. 那麽, 你说 cgrep 般若 index.a | join - index.b 就只会出现一行 0220 05 P0001 大般若波罗蜜多经(600卷)(第1-200卷) 【唐 玄奘译】 在我举的例子里面, index.a 和 index.b 就是一个 relational database 里面 的两个 relation tables. 而 join 指令就是把两个 tables 中有相同项目 的资料 (也就是, 有关联的资料) 结合在一起. 至於要如何把一个 index 档拆成两个 index.a 和 index.b 档, 就不太容易 自动化. 除非你原来的 index 档就已经考虑了资料项目的分隔方式. 比如说, 如果你的 index 中一行代表一栏资料, 而一栏中又分成 (1) 经号 (2) 册 (3) 页码 (4) 经名(卷数) (5) 【朝代 译者或作者】 等五个项目的话, 最好是用一个 tab, 而非若干个空格 (space) 来做资料项目的分隔. 很多 PC 的 editors 自做主张 把 tab 换成若干个 spaces, 请不要用那种 editors. 如果你用了上述的方法来做资料项目的分隔, 那就简单了. 你可以用 awk 将 index 档案的前四项资料读出来, 指令是 awk 'BEGIN{FS = "\t"} {printf("%s\t%s\t%s\t%s\n", $1, $2, $3, $4);}' index > index.a 也可以用 awk 将 index 档案的第一和第五项资料读出来, 指令是 awk 'BEGIN{FS = "\t"} {printf("%s\t%s\n", $1, $5);}' index > index.b 我想, 你懂了吧. > 2.全文搜寻「阿耨多罗三藐三菩提」,报告结果中会出现乱码,如下: > 银色女经 > 27:作。』彼复问言:『何以故尔?』银色答言:『我已起心,不舍大悲,为求成就阿耨多罗三藐三菩 > ㄛG 这是不应该发生的状况. 但是我不知道哪些是搜寻後传输造成的错误, 哪些是 搜寻程式 (cgrep) 本身的错误. 大刚, 能否请你针对这个例子做一个 off-line 的实验. 让我们先确定是 cgrep 的问题, 还是 csh script 的问题, 还是 CGI 的问题, 还是 HTTP 的问题. (我从李白用 lynx 去实验, 发现一样的结果. 哗, 竟然一共找到 六千多行的 output, 太惊人了. 我希望这些 output 都是正确的, 烦劳知道内容的 人去检查了.) 谢谢你的工作. -Shann |
阅读文章: 第 291/2032 篇 | 上篇 | 下篇 | 回覆 | 转寄 | 转贴 | m H d | 返回 |
□ 台大狮子吼佛学专站 http://buddhaspace.org |