1

我有一个用于问题跟踪的表(有点像 stackoverflow :) 以记录 PC 相关问题),为简单起见,我将其缩小到几个字段,如下所示:

Site               Category          Issue
MI Office          Software          My MS word does not run macros.
CL Office          Hardware          PC memory needs to be upgraded
MX Office          Printer           Printer is out of memory.
MI Office          Software          Office product prompts for allowing macro to run

例如,当我查看一个问题时,我想找到相关问题。LIKE例如,如果我这样做,我就不能真正使用运算符:

SELECT...FROM...WHERE Issue LIKE '%My MS word does not run macros.%'

只会返回第一条记录。我是否必须弄清楚如何提取“宏”之类的关键词?我将如何找到相关记录,以便我的查询可以返回记录 1 和 4。或者一起返回 2 和 3?

4

1 回答 1

1

那么这里有3种方法来解决它..

1. 最佳情况: 我们让用户为每个问题添加“标签”。这样,用户可以使用标签搜索问题并找到相关问题。(就像http://stackoverflow.com ;) )

这可以通过创建两个新表来实现:

  • tag_metadata (tag#, name, description, ...)
  • tag_issue_relationship(tag#, issue#)

我们可以更进一步,为每个问题条目添加权重,这将确定其在类似问题搜索/查找排名中的位置。

2. 平均案例: 我们对子类别有更多级别,以帮助进一步分类问题。现在考虑变更控制,您的系统是否支持随着时间的推移轻松添加/删除/重新排列类别层次结构......?

3. 最坏 的情况:假设用户非常懒惰,不想花几秒钟标记他们的问题 :).. 然后你必须实现一个索引算法,为问题描述挑选关键字(名词)并建立索引以方便查找“类似”问题。现在很多时候我们可能在描述中包含可能不重要并且会导致误报的关键字。


[更新]

基本上,您正在寻找的解决方案可以分为以下模块:

  1. 解析器:将从问题描述中提取重要的关键字。关键字的自定义字典列表将用作查找表。
  2. 索引器:将对这些关键字进行索引以使其可搜索。这涉及维护正向和反向索引
  3. 搜索:将使用索引来定位“类似”问题。

可能有一个现有的商业/开源产品可以做到这一点。

于 2012-10-04T11:41:55.057 回答