搜索策略

时间:2011-01-21 17:06:17

标签: search

我正在编写一个需要查找指定字符串可能匹配项的java程序。字符串通常采用

的形式
  

onetwothree one.two.three   someomethingtwoblah onesomething

其中一两个和三个是实际标题的一部分。来自数据库的候选匹配的形式为一+二+三。我想出的方法是使用正则表达式将数据库候选中的每个标记与整个指定的字符串进行比较。数据库令牌匹配数量的计数器将用于确定可能匹配的等级。

我关心的是所呈现的匹配的准确性以及该方法成功找到匹配的能力(如果它们确实存在)。这种方法有效吗?

1 个答案:

答案 0 :(得分:1)

取决于,如果你有很多数据库记录和大字符串来与搜索进行比较可能最终会非常昂贵。它需要为每条记录传递整个输入字符串。

您可以考虑对输入字符串执行单次传递,并针对数据库搜索标记。一些智能搜索索引可以帮助加快这一速度。 配对多个令牌时,您需要找出一种知道何时停止扫描并前进到下一个令牌的方法。部分匹配可以帮到这里;存储一个+两个+三个也分别为一个,两个和三个。或者,如果订单很重要,也可以将其存储为一个,一个+两个,一个+两个+三个。

基本上,当您扫描时,您有一个候选数据库条目列表,这些条目越来越小,与分面搜索相当。