|
|
|
Поиск по окончанию слова
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, есть такая проблема: существует таблица вида Id (int), word (varchar). В ней содержится более 10 миллионов пар id-слово. Как организовать поиск по окончанию слова? 1 вариант: LIKE '%последние_три буквы_слова' - работает, но очень долго. 2 вариант: FULLTEXT KEY и конструкция MATCH(`word`) AGAINST('*последние_три буквы_слова' IN BOOLEAN MODE) - но эта конструкция не работает т.к. звёздочка может быть только в конце и может искать только по началу слова (хотя некоторые, скорее всего старые мануалы, пишут, что звёздочку можно ставить где угодно). Подскажите пожалуйста, есть ли ещё варианты организовать поиск по окончанию слова (по последним нескольким буквам) на чистом MySQL? Если нет, то что может помочь? Sphinx? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2016, 12:11 |
|
||
|
Поиск по окончанию слова
|
|||
|---|---|---|---|
|
#18+
varik, Продублировать word в word_reverse с обратным порядком символов. Получается классический префиксный поиск like 'const%' (только буквы в обратном порядке ставьте), возможна работа по индексу. Если версия позволяет, используйте generated columns: https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html Тогда не нужно следить за актуальностью соответствия прямого и обратного полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2016, 12:32 |
|
||
|
Поиск по окончанию слова
|
|||
|---|---|---|---|
|
#18+
varik, попробойте через substring_index ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2016, 18:27 |
|
||
|
Поиск по окончанию слова
|
|||
|---|---|---|---|
|
#18+
Спасибо вам за советы. Вариант от Melkij помог. Продублировал столбец слов с обратным порядком символов и использую like 'const%' . Работает по индексу и очень быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2016, 18:53 |
|
||
|
Поиск по окончанию слова
|
|||
|---|---|---|---|
|
#18+
Пробовали на PHP через регулярки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2016, 21:14 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=88&tid=1831233]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 309ms |

| 0 / 0 |
