- 论坛徽章:
- 0
|
原帖由 wildlily980 于 2005-11-22 11:18 发表
说句实话,很好。
其实感觉单个的字符意义不大,可以去掉。
另外那个后缀为DB的文件是用什么语言写的?需要什么特别的支持?在我的机器上报错
Fatal error: Call to undefined function dba_popen() in E:wwwc ...
哦, 没有单独写一个说明文件, 只在 cword.php 源码的头部留下了少许说明
.db 的是一个 gdbm 格式的词典文件, 所以你的 php 需要安装 gdbm 支持.
至于为什么用 gdbm 作词典驱动, 那是我尝试了多种的结果. 曾经全部格式化 php 的数组结构 (超级慢,就是载入一个巨大的array)
或者有兴趣也可以试试 mysql 或 sqlite 或其它 SQL 数据库
要添加词很容易的, 只要写个小程序把这个 gdbm格式的词典一一列出来生成文本文件, 如:
<词条> <词频>
....
这样一行一个, 然后把要加入的特殊词加入, 再重新生成 .db 的文件就可以了.
具体的应用主要是用于小型规划的搜索引擎, 比如一个较大型的论坛, 搜索内容(text?)时如果用 select ... like %..% 那样恐怕很差
所以可以把文章内容先按分词法切成词, 然后另外记录哪篇文章含有哪个词 (词也入库转化为 id => word 形式), 相当于记录一大堆
只有整型数据的表, 这种表我在mysql上测试过, 上G的记录select时还是相当快的.
在用户输入检索关键词时, 按同样的切词法切成词, 然后再在词ID/文章ID的表中检索, 可以提供速度及准确率.
比如我查 "简易中文分词", 那么就会切成 "简易" "中文" "分词" 三个词, 从数据库中取出这三个词的编号, 如 (1,18,11 ; 再在生成
的索引表(文章id对应词id)中搜索得到文章id列表, 按需要甚至可以不搜索单字, 以加快速度;
再如果对搜索结果还有特定需求, 那么只要针对模糊匹配出来的id列表进行加强检索就可以了, 对于稍大型的论坛非常有用. ![](static/image/smiley/default/icon_smile.gif) |
|