Я сталкиваюсь с концептуальной проблемой, которую, похоже, не могу решить в своем уме.
Допустим, я хочу, чтобы пользователь вводил то, что он в настоящее время носит, в базу данных через форму. Бросить «футболку» и «синий» в новый ряд невероятно легко. Однако, скажем, я хочу сравнить одних пользователей с другими и ранжировать их по порядку от наиболее похожих до наименьших.
Это становится огромным кошмаром, если учесть количество доступных вариантов.
- Undershirt
- Overshirt
- Куртка
- шарф / колье
- Headwear
- Брюки
- белье
- гетры
- носки
- Обувь
- Аксессуары
На мой взгляд, я мог бы жестко кодировать в 11 категориях выше и позволить пользователю выбирать из выпадающих списков, адаптированных к каждой категории. Теперь давайте воспользуемся примером «майка» и «майка». В зависимости от человека, рубашка с длинными рукавами могла использоваться как; они все еще носят один. Если я заставлю пользователей размещать значения в категориях, пользователь А может поместить их в одну, а пользователь Б - в другую категорию. И их нельзя сравнивать из-за этого, отдельные категории.
Теперь вместо жесткого кодирования по категориям (и, следовательно, ограничения количества вводимых пользователем данных) я мог бы поместить каждый элемент в отдельную строку и выполнять поиск по идентификатору пользователя. Но скажем, человек одевается в шорты один день, а на следующий бросает джинсы и рубашку. Как я могу убедиться, что они сравниваются отдельно (например, платье по сравнению с шортами, платье по сравнению с джинсами + рубашка) и нет (платье по сравнению с шортами + джинсы + рубашка).
Что касается фактического сравнения, то каждый элемент может сравниваться между собой с помощью двумерной таблицы поиска. (Платье Row против джинсов Column даст ноль, Платье Row против платья Column 1)