[erlang-questions] finding the nearest key in a key-value table

Joe Armstrong erlang@REDACTED
Tue May 27 14:10:28 CEST 2014


On Tue, May 27, 2014 at 1:26 PM, Tony Rogvall <tony@REDACTED> wrote:

> What about an ets ordered set table?
>

How? - the problem is the key I lookup are not in the table

Suppose I insert keys

    1, 46, 218, 345, 578, 6541, 14671, ....

And I lookup a key 400 - this is not in the list - I'd like
ets:nearest(400, Tab) to return
the key 354 entry - but there is no ets:nearest ...

/Joe



>
> /Tony
>
> On 27 maj 2014, at 12:58, Joe Armstrong <erlang@REDACTED> wrote:
>
>
> What's the best data structure to support a "nearest key" operation?
>
> I want a data structure that supports the following operations:
>
>      new() -> NewTree
>
>      insert(Key, Value, Tree) -> NewTree
>
>     delete(Key, Tree)  -> NewTree
>
>     nearest(Key, N, Tree)     -> [{Key1,Val1},{Key2,Val2} ...].
>
>     Keys are 20 byte binaries, values are 6 byte binaries
>
>     The maximum number of keys of Key-Value pairs is 10 million.
>
>    nearest(Key, N, Tree) returns the N nearest items to Key in the tree
>
>    "near" means that the keys are near to each other. Often the key I want
> will not
> be in the tree, so I want nearby keys. The nearness measure is just the
> "distance" between the two keys (ie the nearest N keys to the given key if
> the keys were to
> be sorted)
>
> Are there any Erlang libraries that do this?
>
> /Joe
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
> "Installing applications can lead to corruption over time. Applications
> gradually write over each other's libraries, partial upgrades occur, user
> and system errors happen, and minute changes may be unnoticeable and
> difficult to fix"
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20140527/1fdd2ab2/attachment.htm>


More information about the erlang-questions mailing list