Как MongoDB индексирует огромные поля? - PullRequest
2 голосов
/ 09 марта 2011
var post = {
  type: "Article",
  attributes: [
    {"title": "My Essay On Life"},
    {"body": "Life can be .... tons and tons of text ... "}
  ]
};

Мультиключи позволяют индексировать пары ключ / значение. Таким образом, вы никогда не знаете, что какой-то пользователь может добавить в качестве пользовательской пары ключ / значение. В этом случае у нас будет огромное поле (тело), ​​которое будет проиндексировано. (Ничто не помешает кому-то сделать нечто подобное, кроме шаблона Multikeys.) Пытается ли Mongo индексировать поля любого размера или есть какой-то практический предел?

Я провел несколько тестов и, похоже, не смог использовать индекс для полей размером с монстра. Честно говоря, я не хочу индексировать огромные поля неограниченного размера. MySQL поддерживает опцию, в которой вы указываете, сколько символов индексируется (например, 100 символов), так что если текстовое поле превышает этот предел, индексируются только первые 100 символов.

Что такое монго? Я не смог найти это на сайте Монго.

Ответы [ 2 ]

6 голосов
/ 09 марта 2011

Индексные записи ограничены до 800 байтов.Если поле (поля) больше, то на сервере генерируется сообщение об ошибке, и документ не добавляется в индекс;это может вызвать проблемы.

1 голос
/ 10 марта 2011

Я понимаю, что вы можете запросить сообщения по полю тела. Я предлагаю вам "проанализировать" тело с помощью Lucene Analyzer. И проиндексировать поле body_keyword, тип которого массив (["Life", "text"]....).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...