Этот вопрос связан с моим предыдущим вопросом о производительности массивов и хэшей в Ruby .
Необходимые условия
Я знаю, что использование хэшей для хранения большого количества объектовприводит к значительному увеличению производительности из-за поиска O (1) .
Теперь давайте предположим, что у меня было два класса, а именно A
и B
, и они могут быть связаны друг с другом, но только если существует третий класс C
(это своего рода класс отношений).Чтобы привести практический пример, допустим, у меня есть Document
, Query
и класс отношений Judgement
(это из поиска информации, поэтому в основном решение говорит вам, является ли документ релевантным для запроса или нет).
![enter image description here](https://i.stack.imgur.com/wiyNJ.png)
(надеюсь, я правильно понял)
Проблема
В большинстве случаев вы хотите узнать, сколько Judgements
существует комбинация Document
и Query
или, если они есть,
Чтобы выяснить последнее, я буду повторять каждый Jugdement
...
@judgements.each { |j| return true if j.document == document and j.query == query }
Теперь это снова возвращает нас к линейному поиску, который не так уж полезен.
Как его решить?
Я думал о способе двойного поиска.Хэши - если есть такая вещь - чтобы я мог просто посмотреть Judgements
, используя Document
и Query
, которые у меня уже есть.
Или есть какой-либо другой способ быстро выяснить, является ли суждениесуществует для данной пары Document и Query?