搜索策略
问题描述:
我正在写一个java程序,需要找到指定字符串的可能匹配。串通常在搜索策略
onetwothree one.two.three onesomethingtwoblah的onesomething形式
其中一个二和三是一个实际标题的部分。数据库中的候选匹配格式为1 + 2 + 3。我想出的方法是使用正则表达式比较数据库候选者中的每个标记与整个指定的字符串。数据库令牌匹配数量的计数器将用于确定可能匹配的等级。
我担心的是匹配的准确性和方法能否成功找到匹配,如果它们确实存在的话。这种方法是否有效?
答
如果您有很多数据库记录,并且大型字符串与搜索结果进行比较可能会相当昂贵。它需要传递每个记录的整个输入字符串。
你可以考虑对输入字符串进行一次遍历,并对数据库搜索令牌。一些智能搜索索引可以帮助加快速度。 配对多个令牌时,您需要弄清知道何时停止扫描并前进到下一个令牌的方法。部分比赛可以在这里帮助;存储一个+两个+三个也分别作为一个,两个和三个。或者,如果订单很重要,它也可以存储为一个,一个+两个和一个+两个+三个。
基本上,当你扫描你有一个候选数据库条目列表越来越小,相当于一个方面的搜索。