【发布时间】:2015-04-07 11:25:09
【问题描述】:
我需要为我的应用程序创建简单的搜索引擎。让我们将其简化为以下内容:我们有一些文本(很多),我需要搜索并显示相关结果。
我基于这个很棒的article 扩展了一些东西,它对我来说效果很好。
但是我在将词词干化为术语时遇到了问题。例如,“annotation”、“annotations”等词将被提取为“annot”,但假设您尝试搜索某些内容,您会看到意想不到的结果:
- “anno” - 什么都没有
- “注释” - 没有 等
只有单词“annot”会给出相关的结果。那么,我应该如何改进我的搜索以提供预期的结果?因为“annot”包含“anno”,而“annota”比“annot”略多。一直使用 contains 显然不是解决方案
如果在第一种情况下我可以使用一些Ternary search tree,在第二种情况下我不知道该怎么做。
任何想法都会非常有帮助。
更新
oleksii 已将我指向 n-gram here,这可能对我有用,但我不知道如何正确索引 n-gram。
所以问题:
- 哪种数据结构最适合我的需求
- 如何正确索引我的 n-gram
【问题讨论】:
标签: c# algorithm information-retrieval stemming porter-stemmer