分类: Java
2010-08-16 10:40:25
1. 同义词表结构如下
一百分 -->满分, 0.8
十分 --> 满分, 0.8
十分 --> 非常, 0.95
特别 --> 非常, 0.9
格外 --> 非常, 0.9
关心 --> 关注, 0.95
注意 --> 关注, 0.85
......
所有同义词映射到同一个词语, 并赋予一个权重. 当然还有多义词的问题, 会出现多个映射.
当然同义词的整理也是个巨大的工作量, 网上也有一些词库.
2. 根据同义词库的映射
原内容: 我们十分关注您的安全并为此推出了一项功能
映射后: 我们 满分*0.8|非常*0.95|(十分) 关注您的安全并为此推出了一项功能
"|"表示有多个选择, "()"表示为原内容.
3. 对输入内容的分析映射
用户输入: 我们非常关心您的安全并为此推出了一项功能
分析映射: 我们非常 关注*0.95|(关心) 您的安全并为此推出了一项功能
4. 匹配查找
匹配查找就是搜索引擎核心的逻辑了, 当然在遇到 "满分*0.8|非常*0.95|(十分)" 需要增加同义词判断逻辑, 根据2个权重可以得出一个同义词的匹配度, 然后继续分析即可.
以上只是一个非常简单的分析模拟, 和实际的搜索引擎逻辑差别非常大, 仅供参考.