多键实例检索算法

时间:2013-08-25 05:27:19

标签: algorithm trie

我有一个类消息,如下所示:

class Message{

String entity;
Boolean isAvailable;
.........

//getters and setters
.....
.....
}

给定一个代码,我必须通过前8个字母或更多来查找其代码与此代码匹配的所有Message实例,并且是“可用”。
这看起来是Trie很适合的地方 但是,鉴于搜索同样在2个属性上 - 是否有任何算法可以让我更快地选择? 或者,是否有可以容纳多个键的Trie变体?

1 个答案:

答案 0 :(得分:0)

为什么不在isAvailable设置为false时将其从trie中删除?

或者,如果您还需要搜索isAvailable == false,那么您可以尝试两次。这提供了由trie主导的O(n)查找时间,因此它与使用trie一样快(这听起来像是你问题的正确解决方案)。

值得注意的是,“容纳多个键”可能不是您想要的,因为这将指的是匹配匹配的Message,例如entity和{{1} }。这有点复杂,但可以通过entity2上的trie和entity上的trie来完成,并在查找结果集的交集时生成线性时间解决方案。