|
|
|
| Добрый день. Имею массив такого вида:
[0] =>
[айди_текста] =>
[айди_слова] => количество слова
[айди_слова] => количество слова
[айди_текста] =>
[айди_слова] => количество слова
[айди_слова] => количество слова
|
причем есть такая же структура еще с ключами [1] и [2]. Каждый из этих массивов уже отсортирован как надо. В каждом из них айди_текста может повторяться, а может и нет. Допустим в [0] и в [2] есть текст id382, а в [1] его нет.
Вопрос: как мне вывести список айди_текстов (кстати он есть и в отдельном массиве), при этом ориентируясь прежде всего на порядок [0], затем на [1], и лишь затем - на [2] ?
То есть, выше должны быть те, которые выше в [0]. Но если их значение одинаковое (одинаковое количество слов), то кто первее - определяется уже по [1] (если там есть такой текст), ну и уже третьим шагом - определяется по [3].
Надеюсь я понятно обрисовал ситуацию.
Полный вид массива для примера:
Array
(
[0] => Array
(
[288] => Array
(
[84] => 2
[335] => 1
)
[382] => Array
(
[84] => 2
[335] => 1
)
)
[1] => Array
(
)
[2] => Array
(
[382] => Array
(
[84] => 3
[335] => 1
)
[288] => Array
(
[335] => 1
)
)
|
вот в данном случае текст 382 должен выползти выше, чем 288. | |
|
|
|
|
|
|
|
для: Shorr Kan
(11.03.2013 в 18:53)
| | массив случайно не из базы данных? | |
|
|
|
|
|
|
|
для: Valick
(11.03.2013 в 19:25)
| | ну в каком-то далеком прошлом - да. Просто после этого он проходит десяток обработок. Сортировать при помощи mysql не получится (даже до обработки) | |
|
|
|
|
|
|
|
для: Shorr Kan
(11.03.2013 в 19:43)
| | > Сортировать при помощи mysql не получится (даже до обработки)
Представте ситуацию:
Я копаю яму, взял лом и ковыряюсь потихоньку...
Вы ко мне подходите и говорите:
- Слыш, чувак, не мучай окружающих, возьми лопату...
А я отвечаю:
- Копать с помощью лопаты не получится...
___
можете описать эмоции в данной ситуации? | |
|
|
|
|
|
|
|
для: Valick
(11.03.2013 в 19:51)
| | Причина, по которой сортировать не получится - проста. Вот только для объяснения сложна, а для понимания - еще более сложна.
Структура базы такова, что есть таблица со связями - слово-запись-тип-количество. Тип - это то самое, что в моем примере - ключ массива (0, 1 и 2). Тип 0 - главный. Тип 1 - менее важен. Тип 2 - совсем неважен. Но каждый последующий влияет на сортировку, если на предыдущем типе все одинаково.
Если у одной записи в тип 0 есть два слова, и каждое встречается по разу, у другой записи - та же картина, но в тип 1 у нее есть одно из этих слов, а в тип 1 у первой записи нет ничего, то вторая запись должна быть выше. При всем при этом, есть еще и тип 2, который действует таким же образом.
Большее количество слов - это хорошо (влияет на сортировку), но важнее - бОльшее количество разных слов. То есть, если у одной записи в тип 0 одно слово встречается пять раз, а у другой записи в тип 0 два разных слова, каждое встречается только по одному разу, то выше будет вторая запись.
Ко всему этому объяснению прикладываю структуру, которая будет иметь такую же степень полезности:
text_id | word_id | type | count
надо ли говорить, что всё это int.
Как копать лопатой? | |
|
|
|
|
|
|
|
для: Shorr Kan
(14.03.2013 в 08:49)
| | очень похоже на полнотекстовый поиск и релевантность
text_id | word_id | type | count
надо ли говорить, что всё это int.
|
это я так понимаю своего рода индексы?
уточните что именно вы ищите?
если слова в тексте или предложенииях, то это полнотекстовый поиск, и если есть сомнения что MySQL с этим справится, то можно пробовать наример Сфинкс
а если это какие-то параметры, чего-либо, то скорее всего неправильно организована БД | |
|
|
|