Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Java |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 3 4 5 вперед Ctrl→ все |
Zafar Z Member Откуда: Сообщений: 132 |
Вечер добрый. Как расширить значение поиска подстроки в строке К примеру "поиск машины тоета" находит именно эту строку. Но если пользователь набрал: "оиск ашины тоет" (заметьте я специально пропустил некоторые буквы с начала и конца слов) то результат будет нулевым. Использую следующее: If(subject.toString().toLowerCase().contained(charSequence)) Конечно можно использовать внутри условия некий условный цикл с перебором и придумывать алгоритм , но если есть "скоростное" решение. зачем заново велосипед придумывать. |
8 окт 19, 17:01 [21989677] Ответить | Цитировать Сообщить модератору |
вадя Member Откуда: Екатеринбург Сообщений: 18678 |
Zafar Z, http://qaru.site/questions/152979/how-to-implement-a-sql-like-like-operator-in-java |
8 окт 19, 17:17 [21989693] Ответить | Цитировать Сообщить модератору |
сладкий бубалех Member Откуда: Сообщений: 57 |
soundex не поможет? |
8 окт 19, 17:18 [21989694] Ответить | Цитировать Сообщить модератору |
вадя Member Откуда: Екатеринбург Сообщений: 18678 |
|
||
8 окт 19, 17:34 [21989712] Ответить | Цитировать Сообщить модератору |
Zafar Z Member Откуда: Сообщений: 132 |
Пришлось написать маленький алгоритм используя разбивку текста на слова (split) или же можно было сделать по другому? |
8 окт 19, 21:29 [21989869] Ответить | Цитировать Сообщить модератору |
Zafar Z Member Откуда: Сообщений: 132 |
Пришлось написать маленький алгоритм используя разбивку текста на слова (split) или же можно было сделать по другому? |
8 окт 19, 21:30 [21989871] Ответить | Цитировать Сообщить модератору |
Zafar Z Member Откуда: Сообщений: 132 |
Пришлось написать маленький алгоритм используя разбивку текста на слова (split) или же можно было сделать по другому? |
8 окт 19, 21:30 [21989872] Ответить | Цитировать Сообщить модератору |
Zafar Z Member Откуда: Сообщений: 132 |
Пришлось написать маленький алгоритм используя разбивку текста на слова (split) или же можно было сделать по другому? |
8 окт 19, 21:31 [21989873] Ответить | Цитировать Сообщить модератору |
Zafar Z Member Откуда: Сообщений: 132 |
Пришлось написать маленький алгоритм используя разбивку текста на слова (split) или же можно было сделать по другому? |
8 окт 19, 21:31 [21989874] Ответить | Цитировать Сообщить модератору |
Zafar Z Member Откуда: Сообщений: 132 |
Пришлось написать маленький алгоритм используя разбивку текста на слова (split) или же можно было сделать по другому? К сообщению приложен файл. Размер - 142Kb |
8 окт 19, 21:32 [21989877] Ответить | Цитировать Сообщить модератору |
Zafar Z Member Откуда: Сообщений: 132 |
Мои извинения отправлял с телефона. Надеюсь админы удалят повторные сообщения . |
8 окт 19, 21:39 [21989881] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
Zafar Z, Твоя задача звучит как нечеткий текстовый поиск. Ключевые слова: soundex, metaphone, bigram analyze, text index. Гугли. Находи. То что ты накодил - это туфта. Не обижайся за правду. |
8 окт 19, 21:41 [21989883] Ответить | Цитировать Сообщить модератору |
vas0 Member Откуда: Таможенный союз (Россия, Казахстан) Сообщений: 1288 |
|
||
8 окт 19, 21:51 [21989889] Ответить | Цитировать Сообщить модератору |
chpasha Member Откуда: Сообщений: 10222 |
Вы конечно все правы, но есть ненулевая вероятность того, что ему достаточно like |
8 окт 19, 22:04 [21989896] Ответить | Цитировать Сообщить модератору |
вадя Member Откуда: Екатеринбург Сообщений: 18678 |
такой
возможен с like, но это в базе. странно искать так в java, это очень долго..., да и количество записей ограничено |
||||
9 окт 19, 00:07 [21989950] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
вадя, Like не является аналогом fuzzy - поиска. |
9 окт 19, 07:16 [21989987] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
1) Soundex в java (это совсем жлобский вариант) http://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/language/Soundex.html но это поиски заточенные на английский. Как будет с кириллицей ХЗ надо тестить. +Metaphone http://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/language/DoubleMetaphone.html 2) Apache Lucene (надо самому всё кодить) https://lucene.apache.org/ (здесь я буду Кеп очевидность потому что в Джава реально ЛЮБЫЕ текстовые поиски в конечном счете приходят к Апач Люсин) 3) ELK (коробочное решение но надо быть намного архитектором чтобы правильно всё собрать) и главное поменьше платить провайдеру. https://www.elastic.co/what-is/elk-stack |
9 окт 19, 09:00 [21990046] Ответить | Цитировать Сообщить модератору |
вадя Member Откуда: Екатеринбург Сообщений: 18678 |
вот у меня есть данные по времени поиск в mysql при помощи like & like &... в 28 000 и 10 000 000 записях. а есть ли у кого подобный данные для java? |
9 окт 19, 09:02 [21990049] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7245 |
Типо ты сам не из java)) |
||
9 окт 19, 09:35 [21990078] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
Ну like это просто аналог substr, по 99% использований. Поэтому если юзер тайпает "мос гор бол" имея в виду Московская Гордская Больница то чтобы такой поиск работал нужна предобработка исходных данных для того чтоб они были подходящими для индекса. Опять-же разбить на лексемы и проиндексировать каждую отдельно. Как - миллион технологий есть но все они являются просто подмножеством fuzzy поиска. |
9 окт 19, 09:57 [21990099] Ответить | Цитировать Сообщить модератору |
вадя Member Откуда: Екатеринбург Сообщений: 18678 |
если 5.7+ поиск в 10 000 000 длился 30 сек, то в 8.+ 4 сек (это когда вводится заведомо не существующее, т.е. поиск по все таблице)
действительно, тогда такое "оиск ашины тоет" надо разбить на 3 substr и объединить по & |
||||||
9 окт 19, 10:36 [21990136] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
вадя, при чем тут MySQL ? Афтор пишет в форум Java. Логичным будет предлагать ему решение в контексте. |
9 окт 19, 10:40 [21990144] Ответить | Цитировать Сообщить модератору |
вадя Member Откуда: Екатеринбург Сообщений: 18678 |
судя по примеру поиска число записей у тс не маленькое. насколько оправдан такой поиск? |
||
9 окт 19, 10:50 [21990155] Ответить | Цитировать Сообщить модератору |
PetroNotC Sharp Member Откуда: Сообщений: 7245 |
вадя, Например в фирме только java разработчики |
9 окт 19, 10:56 [21990161] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
Неохота обсуждать MySQL пока автор не подтвердит что его такое решение тоже устроит. |
9 окт 19, 10:59 [21990166] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 3 4 5 вперед Ctrl→ все |
Все форумы / Java | ![]() |