powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как сделать сопоставление нужных слов/словосочетаний в тексте
6 сообщений из 6, страница 1 из 1
Как сделать сопоставление нужных слов/словосочетаний в тексте
    #39419450
kormot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день Уважаемые!

Хочу спросить у вас как решают такую задачу:
1. Есть таблица со словосочетаниями:
Код: sql
1.
2.
3.
4.
TABLE slova (
    id         SERIAL,
    strItem    CHAR(32) NOT NULL UNIQUE
)



И таблица с текстами
Код: sql
1.
2.
3.
4.
TABLE texts (
    id         SERIAL,
    txtItem    TEXT NOT NULL
)



Собственно как мне получить таблицу в которой будут сопоставлены тексты с присутствующими в них словосочетаниями? Т.е.
Код: sql
1.
2.
3.
4.
5.
6.
7.
TABLE slovaText (
    id         SERIAL,
    textID      BIGINT UNSIGNED NOT NULL,
    slovoID     BIGINT UNSIGNED NOT NULL,
    FK(textID)  texts(id),
    FK(slovoID) slova(id)
)



Морфология словосочетаний не интересует, нужно полное соответствие. Если это решается какими-то утилитами сторонними, то дайте пожалуйста на них наводку тоже.

Спасибо!
...
Рейтинг: 0 / 0
Как сделать сопоставление нужных слов/словосочетаний в тексте
    #39419477
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
INSERT INTO slovaText (textID, slovoID)
SELECT texts.id, slova.id
FROM texts, slova
WHERE INSTR(texts.txtItem, slova.strItem)



Это черновой код. Он НЕ ОПРЕДЕЛЯЕТ суб-вхождения (искомое слово является фрагментом слова текста, например "проХОД"). Реально вместо INSTR нужно использовать RLIKE, составив из slova.strItem шаблон, проверяющий, что символ перед словом и символ после слова не являются буквенными (пробелы, переводы строки, знаки препинания, начало или конец текста).
...
Рейтинг: 0 / 0
Как сделать сопоставление нужных слов/словосочетаний в тексте
    #39419496
kormot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, спасибо!

Исправить чтобы без RLIKE'а был, а с INSTR'ом и при этом работал верно, можно добавляя тексты в texts подготовленными, т.е. все знаки препинания, переводы строк и прочих хлам на пробелы, а запрос так изменил:
Код: sql
1.
WHERE INSTR(texts.txtItem, CONCAT_WS(" ", slova.strItem, "")



Спасибо ещё раз! Теперь знаю очень интересный SQL трюк.
...
Рейтинг: 0 / 0
Как сделать сопоставление нужных слов/словосочетаний в тексте
    #39419553
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в самом начале и самом конце текста - пробелы? если нет, то самое первое и самое последнее слова текста такой запрос не отыщет.
...
Рейтинг: 0 / 0
Как сделать сопоставление нужных слов/словосочетаний в тексте
    #39419561
kormot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вначале/конце добавить, точно
...
Рейтинг: 0 / 0
Как сделать сопоставление нужных слов/словосочетаний в тексте
    #39420419
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kormotДобрый день Уважаемые!

Хочу спросить у вас как решают такую задачу:
1. Есть таблица со словосочетаниями:
Код: sql
1.
2.
3.
4.
TABLE slova (
    id         SERIAL,
    strItem    CHAR(32) NOT NULL UNIQUE
)




И таблица с текстами
Код: sql
1.
2.
3.
4.
TABLE texts (
    id         SERIAL,
    txtItem    TEXT NOT NULL
)




Собственно как мне получить таблицу в которой будут сопоставлены тексты с присутствующими в них словосочетаниями? Т.е.
Код: sql
1.
2.
3.
4.
5.
6.
7.
TABLE slovaText (
    id         SERIAL,
    textID      BIGINT UNSIGNED NOT NULL,
    slovoID     BIGINT UNSIGNED NOT NULL,
    FK(textID)  texts(id),
    FK(slovoID) slova(id)
)




Морфология словосочетаний не интересует, нужно полное соответствие. Если это решается какими-то утилитами сторонними, то дайте пожалуйста на них наводку тоже.

Спасибо!

https://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html

http://sphinxsearch.com/
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как сделать сопоставление нужных слов/словосочетаний в тексте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]