У меня есть функция photos-with-keyword-starting
, которая получает списки фотографий для заданного ключевого слова из экземпляра MongoDB с помощью monger, и другая, которая находит подмножества этих фотографий с помощью set/intersection
.
(defn photos-with-keywords-starting [stems]
(apply set/intersection
(map set
(map photos-with-keyword-starting stems))))
Раньше я думал, что это работает нормально, но поскольку добавлено больше записей, пересечение не работает должным образом — оно пропускает множество записей, которые содержат оба ключевых слова.
Я заметил, что вызовы функции photos-with-keyword-starting
всегда возвращают максимум 256 результатов:
=> (count (photos-with-keyword-starting "lisa"))
256
Вот код этой функции:
(defn photos-with-keyword-starting [stem]
(with-db (q/find {:keywords {$regex (str "^" stem)}})
(q/sort {:datetime 1})))
Так как вызовы для поиска записей в MongoDB не возвращают все записи, если их больше 256, я не получаю правильные подмножества при указании более одного ключевого слова.
Как увеличить этот лимит?
bean
:(update data :datetime bean)
. В противном случае вы можете использовать набор с пользовательским равенством: clojuredocs.org/clojure.core/sorted-set -от - person leetwinski   schedule 02.04.2018