Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Подсчет точных вхождений в поле
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Пытаюсь разобраться - возможно ли данная манипуляция. Есть таблица "slova" c полями (id, name,) пример: id name 1 гриб 2 лес 3 нож и таблица "statja" с полями (id, text) id text 1 Однажды я пошел в лес 2 Существует много разных грибов в лесу, но не все грибы съедобные 3 Найденный гриб в лесу аккуратно был срезан перочинным ножиком Хочу подсчитать сколько раз каждое слово входит в каждом тексте (поле "text") В итоге хочу получить результат: name id_statja количество гриб 1 0 гриб 2 2 гриб 3 1 лес 1 1 лес 2 1 лес 3 1 ...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 11:07 |
|
||
|
Подсчет точных вхождений в поле
|
|||
|---|---|---|---|
|
#18+
Да не вопрос. Берёшь текст статьи, вылизываешь все разделители слов, преобразуя их в как-нибудь один (скажем, пробел), добавляешь по пробелу в начало и в конец, а потом просто ищешь каждое отдельно взятое слово, точно так же обрамлённое пробелами. Для подсчёта же количества вхождений заменяешь обрамлённое пробелами слово на два пробела, считаешь разницу длин текста до замены и после, делишь на длину слова и получаешь количество. Ну то есть алгоритмически: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 12:43 |
|
||
|
Подсчет точных вхождений в поле
|
|||
|---|---|---|---|
|
#18+
Akina, спасибо. Пока ждал набросал свой пример, вот только есть проблемы небольшие SELECT length(text) - SELECT length(REPLACE(text,'гриб','гри')) FROM `statja` итогом будет нужное количество проблема в том, что функция replace регистрозависимая (Гриб и гриб - разные слова) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 12:55 |
|
||
|
Подсчет точных вхождений в поле
|
|||
|---|---|---|---|
|
#18+
точнее сказать, функция меняет только точные вхождения. Можно ли как-то обойти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 12:58 |
|
||
|
Подсчет точных вхождений в поле
|
|||
|---|---|---|---|
|
#18+
sergei.biyaltфункция replace регистрозависимая (Гриб и гриб - разные слова)Зависит от Collation. sergei.biyaltфункция меняет только точные вхожденияА как надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 13:01 |
|
||
|
Подсчет точных вхождений в поле
|
|||
|---|---|---|---|
|
#18+
sergei.biyaltфункция replace регистрозависимаяК тому же нет необходимости сохранения текста после замены - так что привести его к одному регистру (LOWER(), к примеру), и всё... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 13:03 |
|
||
|
Подсчет точных вхождений в поле
|
|||
|---|---|---|---|
|
#18+
AkinaА как надо? если в тексте есть, слова ГРИБ, или гриб, или Гриб нужно всех их просуммировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 13:05 |
|
||
|
Подсчет точных вхождений в поле
|
|||
|---|---|---|---|
|
#18+
SELECT length(REPLACE(LOWER(text),'гриб','гри')) FROM `statja` так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 13:06 |
|
||
|
Подсчет точных вхождений в поле
|
|||
|---|---|---|---|
|
#18+
Akina, спасибо Вам большое! То что нужно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 13:08 |
|
||
|
Подсчет точных вхождений в поле
|
|||
|---|---|---|---|
|
#18+
AkinaДа не вопрос. Берёшь текст статьи, вылизываешь все разделители слов, преобразуя их в как-нибудь один (скажем, пробел), добавляешь по пробелу в начало и в конец, А зачем доставать все разделители и вставлять пробелы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 13:13 |
|
||
|
Подсчет точных вхождений в поле
|
|||
|---|---|---|---|
|
#18+
sergei.biyaltзачем доставать все разделители и вставлять пробелы? Затем, чтобы под слово "гриб" не считало слова "грибы", "грибной", "Магриб" и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 14:15 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39466688&tid=1830634]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 140ms |

| 0 / 0 |
