Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
 Расширенный Поиск подстроки  [new]
Zafar Z
Member

Откуда:
Сообщений: 114
Вечер добрый.

Как расширить значение поиска подстроки в строке
К примеру "поиск машины тоета" находит именно эту строку. Но если пользователь набрал: "оиск ашины тоет" (заметьте я специально пропустил некоторые буквы с начала и конца слов) то результат будет нулевым. Использую следующее:

If(subject.toString().toLowerCase().contained(charSequence))

Конечно можно использовать внутри условия некий условный цикл с перебором и придумывать алгоритм , но если есть "скоростное" решение. зачем заново велосипед придумывать.
8 окт 19, 17:01    [21989677]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16804
Zafar Z,

http://qaru.site/questions/152979/how-to-implement-a-sql-like-like-operator-in-java
8 окт 19, 17:17    [21989693]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
сладкий бубалех
Member

Откуда:
Сообщений: 40
soundex не поможет?
8 окт 19, 17:18    [21989694]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16804
Zafar Z
К примеру "поиск машины тоета" находит именно эту строку. Но если пользователь набрал: "оиск ашины тоет" (заметьте я специально пропустил некоторые буквы с начала и конца слов) то результат будет нулевым. Использую следующее:
вообще это поиск - в базе, там всё решено.
8 окт 19, 17:34    [21989712]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
Zafar Z
Member

Откуда:
Сообщений: 114
Пришлось написать маленький алгоритм используя разбивку текста на слова (split) или же можно было сделать по другому?
8 окт 19, 21:29    [21989869]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
Zafar Z
Member

Откуда:
Сообщений: 114
Пришлось написать маленький алгоритм используя разбивку текста на слова (split) или же можно было сделать по другому?
8 окт 19, 21:30    [21989871]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
Zafar Z
Member

Откуда:
Сообщений: 114
Пришлось написать маленький алгоритм используя разбивку текста на слова (split) или же можно было сделать по другому?
8 окт 19, 21:30    [21989872]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
Zafar Z
Member

Откуда:
Сообщений: 114
Пришлось написать маленький алгоритм используя разбивку текста на слова (split) или же можно было сделать по другому?
8 окт 19, 21:31    [21989873]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
Zafar Z
Member

Откуда:
Сообщений: 114
Пришлось написать маленький алгоритм используя разбивку текста на слова (split) или же можно было сделать по другому?
8 окт 19, 21:31    [21989874]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
Zafar Z
Member

Откуда:
Сообщений: 114
Пришлось написать маленький алгоритм используя разбивку текста на слова (split) или же можно было сделать по другому?

К сообщению приложен файл. Размер - 142Kb
8 окт 19, 21:32    [21989877]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
Zafar Z
Member

Откуда:
Сообщений: 114
Мои извинения отправлял с телефона. Надеюсь админы удалят повторные сообщения .
8 окт 19, 21:39    [21989881]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
mayton
Member

Откуда: loopback
Сообщений: 43000
Zafar Z,

Твоя задача звучит как нечеткий текстовый поиск.

Ключевые слова: soundex, metaphone, bigram analyze, text index.

Гугли. Находи.

То что ты накодил - это туфта. Не обижайся за правду.
8 окт 19, 21:41    [21989883]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
vas0
Member

Откуда: Таможенный союз (Россия, Казахстан)
Сообщений: 1290
mayton
Zafar Z,

Твоя задача звучит как нечеткий текстовый поиск.

Ключевые слова: soundex, metaphone, bigram analyze, text index.

Гугли. Находи.

То что ты накодил - это туфта. Не обижайся за правду.
fuzzy search
8 окт 19, 21:51    [21989889]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
chpasha
Member

Откуда:
Сообщений: 8604
Вы конечно все правы, но есть ненулевая вероятность того, что ему достаточно like
8 окт 19, 22:04    [21989896]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16804
chpasha
но есть ненулевая вероятность того, что ему достаточно like
вероятность близка к 1,
такой
Zafar Z
"оиск ашины тоет"

возможен с like, но это в базе.
странно искать так в java, это очень долго..., да и количество записей ограничено
9 окт 19, 00:07    [21989950]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
mayton
Member

Откуда: loopback
Сообщений: 43000
вадя,

Like не является аналогом fuzzy - поиска.
9 окт 19, 07:16    [21989987]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
mayton
Member

Откуда: loopback
Сообщений: 43000
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]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16804
вот у меня есть данные по времени поиск в mysql при помощи like & like &...
в 28 000 и 10 000 000 записях. а есть ли у кого подобный данные для java?
9 окт 19, 09:02    [21990049]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2543
вадя
вот у меня есть данные по времени поиск в mysql при помощи like & like &...
в 28 000 и 10 000 000 записях. а есть ли у кого подобный данные для java?

Типо ты сам не из java))
9 окт 19, 09:35    [21990078]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
mayton
Member

Откуда: loopback
Сообщений: 43000
Ну like это просто аналог substr, по 99% использований.

Поэтому если юзер тайпает "мос гор бол" имея в виду Московская Гордская Больница то чтобы
такой поиск работал нужна предобработка исходных данных для того чтоб они были подходящими
для индекса. Опять-же разбить на лексемы и проиндексировать каждую отдельно. Как - миллион
технологий есть но все они являются просто подмножеством fuzzy поиска.
9 окт 19, 09:57    [21990099]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16804
PetroNotC Sharp
Типо ты сам не из java))
типо есть спецы и круче
mayton
Поэтому если юзер тайпает "мос гор бол" имея в виду Московская Гордская Больница то чтобы
такой поиск работал нужна предобработка исходных данных для того чтоб они были подходящими
для индекса.
вот тут есть интересное сравнение (опять таки на mysql)
если 5.7+ поиск в 10 000 000 длился 30 сек, то в 8.+ 4 сек (это когда вводится заведомо не существующее, т.е. поиск по все таблице)
mayton
Ну like это просто аналог substr, по 99% использований.

действительно, тогда такое "оиск ашины тоет" надо разбить на 3 substr и объединить по &
9 окт 19, 10:36    [21990136]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
mayton
Member

Откуда: loopback
Сообщений: 43000
вадя, при чем тут MySQL ?

Афтор пишет в форум Java. Логичным будет предлагать ему решение в контексте.
9 окт 19, 10:40    [21990144]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16804
mayton
вадя, при чем тут MySQL ?

Афтор пишет в форум Java. Логичным будет предлагать ему решение в контексте.
мне интересна причина постановки такой задачи на java и поэтому как вариант для сравнения - mysql.
судя по примеру поиска число записей у тс не маленькое. насколько оправдан такой поиск?
9 окт 19, 10:50    [21990155]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2543
вадя,
Например в фирме только java разработчики
9 окт 19, 10:56    [21990161]     Ответить | Цитировать Сообщить модератору
 Re: Расширенный Поиск подстроки  [new]
mayton
Member

Откуда: loopback
Сообщений: 43000
Неохота обсуждать MySQL пока автор не подтвердит что его такое решение тоже устроит.
9 окт 19, 10:59    [21990166]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
Все форумы / Java Ответить