Справка по алгоритму PHP - PullRequest
0 голосов
/ 03 июня 2011

Я работаю над алгоритмом PHP для сопоставления совместимости на основе ответов на вопросы в форме.

В этой ситуации пользователю A и пользователю B задаются одинаковые точные вопросы.Допустим, это несколько вопросов:

Cleanliness
    No preference
    Somewhat Clean
    Tidy but cluttered
    Strictly organized


Person B Cleanliness Preference
    Whatever
    Can't be too different
    Must Match

Room Temperature
    Cold
    Comfortable
    Hot

Теперь будет больше вопросов, но эта тенденция продолжается.Есть вопросы, касающиеся вас конкретно, а затем есть вопросы, которые относятся к человеку Б (и как вы хотите, чтобы он ответил)

Я хочу, чтобы алгоритм соответствовал людям на основе их сходства в ответах и, очевидно, условныхзаявления для лица B. придадут больший вес их ответам на эти вопросы.

Возможно, я подумал о том, чтобы присвоить баллы каждому ответу, но я все еще не уверен, как мне это сделать.

У кого-нибудь есть предложения?

Ответы [ 3 ]

1 голос
/ 03 июня 2011
1 голос
/ 03 июня 2011

Выровняйте все свои «поля», которые вы спрашиваете у своих пользователей в анкете.Либо сделайте свои диапазоны очень ограниченными (всегда, иногда, никогда) и присвойте им постоянные значения, такие как 1, 2, 3. Переберите всех, чтобы сопоставить ответы вместе.Создайте список потенциальных совместимых совпадений, которые затем можно будет отсортировать по требованию вашего приложения.

Образец

define('FEMALE', 0);
define('MALE', 1);

$user1 = array(
 'name' => 'John Doe',
 'gender' => MALE,
 'interseted_in' => FEMALE,
 'cleanliness' => 3,
// etc
);

$potentials = array();
foreach($users as $u)
{
  if($user['gender'] != $user1['interested_in'])
  {
    continue;
  }

  // More checking
  // ...
  // At the end of checking, add to the potentials.
  $potentials[] = $u;
}
1 голос
/ 03 июня 2011

Система баллов может работать.Вот мое мышление:

Для каждого значения, на которое они отвечают на вопрос, этот ответ получает идентификатор в базе данных.Когда вы пытаетесь «сопоставить» или «сравнить» двух людей, вы складываете общее количество ответов, сравнивая идентификаторы ответов.Тогда вам решать, достаточно ли у них общего. Например, если у них есть 8/10 общих ответов, они могут совпадать.

mysql> SELECT * FROM users LIMIT 1;
+----+---------------+
| id | name          |
+----+---------------+
|  1 | Dalton Conley |
+----+---------------+

mysql> SELECT * FROM questions;
+----+--------------------------+
| id | value                    |
+----+--------------------------+
|  1 | Do you like to program?  |
+----+--------------------------+

mysql> SELECT * FROM answers;
+----+-------------+-------+
| id | question_id | value |
+----+-------------+-------+
|  1 |           1 | yes   |
|  2 |           1 | no    |
+----+-------------+-------+

mysql> SELECT * FROM user_answers;
+---------+-------------+-----------+
| user_id | question_id | answer_id |
+---------+-------------+-----------+
|       1 |           1 |         2 |
+---------+-------------+-----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...