内部搜索引擎的布局于实现

索引
    文档
    ~ 分词 (中文分词有scws等)
    ~ 去除无意义的字符|得到:{
        词语
        出现次数
    }
    ~ 根据资料每部分的权重不同等规则来得到每个词语的权重值|得到:{
        词语
        每个词语的权重
    }
    ~ 存储关键字
    ~ 存储关键字与文档的关系,对应权重及用于搜索的关系(即索引)
索引完成

搜索
    关键字
    ~ 拆分(空格拆分,中文分词拆分等)
    ~ 去除常用关键字,最小字符长度等规则过滤|得到:{
        + 关键字列表
        - 关键字列表 (可能不需要在关键字中来过滤)
        ...
    }
    ~ 查询得到每个关键字组中及对应到每个文档的权重列表
    ~ 通过关键字规则计算出关键字的权重值
    ~ 排序关键字并获取指定范围的文档键值列表
    ~ 根据文档键值获得文档
搜索完成

可用于英文的搜索关键字推荐
    关键字
    ~ 拆分(空格拆分,中文分词拆分等)
    ~ 去除常用关键字,最小字符长度等规则过滤|得到:{
        必要的关键字列表
    }
    ~ 根据拆分的关键字一一到数据库获取相同发音的关键字|得到:{
        相同发音的关键字列表 (SQL中可用soundex函数)
    }
    ~ 比较发音相同关键字与原关键字相似度,定阀值来看是否保留|得到:{
        较高权重的关键字 (PHP中可用levenshtein或similar_text)
        权重
    }
    ~ 根据上述权重得到最高权重的几个关键字
获得推荐关键字完成
posted @ 2012-09-14 14:37  liushan  阅读(319)  评论(0编辑  收藏  举报