我正在考虑实现一个小型搜索引擎。但是我不确定搜索引擎如何进行分词。
我的想法是这样的:
- 建立一个包含流行词的词典
- 对于 html 文档中的每个句子,用空格分隔单词
- 进行线性搜索以检查某些单词是否在字典中。如果是,这些是该页面的关键字。
- 让关键字是数据库表。将 url 存储在所有对应的关键字表中
所以假设我们有一句话“我邀请她去市中心附近的当地餐馆吃饭”。不包括停止词的词是:{invited, Dinner, local, restaurant, Downtown}
字典只包含词{邀请、晚餐、餐厅}
以下是问题:
- 字典外的词怎么处理?(例如市中心)
- 如何处理过去时、复数形式等?我应该将所有带有特定前缀的单词存储在一起吗?(例如“邀请”将包含“邀请、邀请、邀请...”) 那么像“后退”和“后退”这样的词呢?
- 如何处理“本地餐厅”之类的查询?简单地将“local”和“restaurant”的结果结合起来似乎不是一个好的解决方案,而将“local restaurant”存储为另一个关键字表可能会导致更多的重复,给分词带来困难。
- 有什么比我的想法更好的方法吗?
欢迎任何意见。谢谢!