Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Полнотекстовый поиск / 24 сообщений из 24, страница 1 из 1
08.04.2013, 21:29:03
    #38217958
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Вот тоже, решил озадачится теорией. В соседней ветке, прописали его как достоинство для движка MyIsam... а нужен ли он ваще?

или так: при нормально спроектированном наборе сущностей и атрибутов к ним, зачем нужен полнотекстовый поиск?
(я ведь вроде как знаю какой атрибут или набор атрибутов ищу - разве сравнения недостаточно? Или like для отбора автокомплитов?)
...
Рейтинг: 0 / 0
08.04.2013, 21:34:46
    #38217963
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Arhat109 В соседней ветке, прописали его как достоинство для движка MyIsam...Начиная с 5.6, реализовано и для InnoDB.

Arhat109нужен ли он ваще?Да.

Arhat109или так: при нормально спроектированном наборе сущностей и атрибутов к ним, зачем нужен полнотекстовый поиск?
Ты никогда не пробовал использовать расширенный язык запросов, например, на гугле? и хоть там всё делается совершенно иначе, суть та же.
...
Рейтинг: 0 / 0
09.04.2013, 06:19:53
    #38218085
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Akina,

я пользую расширенный язык сфинкса, вполне устраивает, когда надо искать "хоть что-то, хоть где-нибудь". Но само применение такому режиму поиска - имхо, весьма узкое. Гораздо чаще, надо выбрать "похожие" сущности... причем вполне конкретные, причем степень похожести привязана к соответствующим атрибутам, а при нормальной разбивке - решается обычным доступом по ключам.

Ваще без поиска.

Собственно почему и спросил: есть ли какие-то ещё задачи, которые без "полнотекста" НЕ решаются или решаются через .опу?

(сколько видел применений, правда не так много... мож с десяток, все они были от неумения организовать БД)
...
Рейтинг: 0 / 0
09.04.2013, 06:29:06
    #38218089
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Arhat109, поясню на примере. Адресно-Телефонная База Предприятий и Сотрудников - фактически основа любой учетной системы и СРМ-ок разного рода. Содержит море текстовой инфы, и может быть в примитиве реализована как куча текстов.

Поиск "Вася Пупкин" может выдать и персону, с личными данными, и сотрудника с должностью и фирмой или ваще с послужным списком фирм, и контрагента и т.д.

но! стоит привести всё это чудо к, хотя бы 3НФ... и усё. Нет никакого поиска. Потому что текстов "раз два и обчелся": есть Вася - в справочнике имен да Пупкин в справочнике фамилий, да "ИП Вася Пупкин" в справочнике названий фирм... а всё остальное - выборка по найденным ключам.

Итого 3 лайка и выборки по ключам. Нет? :)
...
Рейтинг: 0 / 0
09.04.2013, 06:52:36
    #38218097
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Arhat109Arhat109, поясню на примере. Адресно-Телефонная База Предприятий и Сотрудников - фактически основа любой учетной системы и СРМ-ок разного рода. Содержит море текстовой инфы, и может быть в примитиве реализована как куча текстов.

Поиск "Вася Пупкин" может выдать и персону, с личными данными, и сотрудника с должностью и фирмой или ваще с послужным списком фирм, и контрагента и т.д.

но! стоит привести всё это чудо к, хотя бы 3НФ... и усё. Нет никакого поиска. Потому что текстов "раз два и обчелся": есть Вася - в справочнике имен да Пупкин в справочнике фамилий, да "ИП Вася Пупкин" в справочнике названий фирм... а всё остальное - выборка по найденным ключам.

Итого 3 лайка и выборки по ключам. Нет? :)

Мне как то нужен был -- анализ ключевых слов на определеном наборе
сайтов -- ну скажем 3-5 тысяч страниц по 100-2000 буковок.
Сайтты выкачали в ТЕХТ колонку, потом сделал фултекст индекс и
легким движением , брюки превратились в матрицу встречаемости
ключевых слов по сайтам.

3НФ була бы здесь изобретением велосипеда.
...
Рейтинг: 0 / 0
09.04.2013, 07:25:56
    #38218106
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
javajdbc, вот и в вашем сообщении, ключевик "как-то нужен был" :)

меня как раз и интересует где ещё, кроме "хоть как-то, хоть где-то"... ", ваше: "как-то нужен был" - в этот круг задач входит.
...
Рейтинг: 0 / 0
09.04.2013, 11:23:01
    #38218430
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Arhat109Вот тоже, решил озадачится теорией. В соседней ветке, прописали его как достоинство для движка MyIsam... а нужен ли он ваще?

или так: при нормально спроектированном наборе сущностей и атрибутов к ним, зачем нужен полнотекстовый поиск?

К нормальному проектированию БД этот вопрос никак не привязан.
Теория такова: индексы есть простые и многомерные (полнотекстовый индекс является частным случаем многомерного индекса). У этих двух классов индексов есть набор операций, которые они могут быстро выполнять.

У обычных индексов это -- равенство значению, попадание в непрерывный диапазон значений, и поиск по префиксу значения (совпадение префикса с заданным).

У полнотекстового -- включение слова в поле, порог частотности появления слова в поле, и другие.

Это просто разные операции, и всё, соответственно, в зависимости от того, как тебе нужно быстро искать, тебе нужны те или иные индексы.

Нормализация БД и нормальные формы тут даже и не очень при чём, поскольку полнотекстовые индексы на самом деле как бы нарушают 1НФ, рассматривая поле не как атом, а как набор слов.

Ну и понятно, почему у тебя возник такой вопрос -- бывает, что разработчики мало внимания уделяют разработке самой БД, а огрехи в её дизайне лечат прилепленным сверху полнотекстовым поиском. ПП -- мощное средство, конечно, оно может "залечить" многое в плохой БД, но у него есть и слабая сторона -- на реальном OLTP поддержка полнотекстового индекса дорога, и не всегда вообще возможна.
...
Рейтинг: 0 / 0
09.04.2013, 11:28:19
    #38218441
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Arhat109
Собственно почему и спросил: есть ли какие-то ещё задачи, которые без "полнотекста" НЕ решаются или решаются через .опу?



Конечно же, есть.

Могу привести пример.
БД патентов и статей в области химической промышленности (со всего мира за наверное полвека).
Всё это классифицировано, разложено по полочкам. Главное поле -- текст патента или статьи.
Задача -- искать статьи на заданные темы, например, о метане. Или о синтезе этилового спирта.
Ты же не будешь анализировать текст статьи или патента и делать его полную семантическую модель, чтобы
уложить её в таблицы и потом по ним искать. Это и сложно, и чуть ли почти невозможно на современном этапе
развития техники.
...
Рейтинг: 0 / 0
09.04.2013, 13:28:41
    #38218696
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
MasterZiv,

:) это первое что пришло в голову. Собственно эта сторона вопроса меня всегда и интересовала больше всего... есть какой-никакой опыт в "раскладывании" текстов товарных строк в такие модели... уже есть. :)
...
Рейтинг: 0 / 0
09.04.2013, 20:12:59
    #38219441
InterSky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Интересно про сфинкса:
Предположим он приводит какие-то слова к каким-то значениям.
Допустим слова Москва и Moscow он будет считать одним и тем же. Грубо говоря это забито до анализа страницы, и индексируя он наверняка с своём индексе превратит текст "Это Москва река" в "Это Moscow река".
И тоже самое он сделает с поисковым запросом - ищет пользователь Москва или Moscow - он будет искать Moscow.
А что будет если в тексте написано "Москварека"?


И интересно с именами в телефонном справочнике (раз уж вы затронули эту тему). Есть имена:
Алекс
Алексей
Александр
при этом все Алексеи и все Александры считают что именно их имя сокращённо пишется как Алекс.
И нам надо найти Александра в телефонной базе. Но он может быть записан и как Алекс. А если мы будем искать Алексов, то мы найдём Алексеев, которые нам не нужны.

Как это решается в вашем случае и в случае сфинкса?
...
Рейтинг: 0 / 0
09.04.2013, 20:35:44
    #38219457
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
InterSky,

1. Сфинкс настраивается "вдоль и поперек", а кроме этого имеет свой внутренний язык запросов, умеет делать групповые запросы и выдавать результат несколькими различными способами... уж всяко богаче и круче полнотекста. Как он там внутрях строит свой "многомерный" индекс - лично мне по-барабану. Есть РТФМ. Нормальная, понятная дока на русском. В т.ч. и "прикручивается как плагин (или чего там не помню) к Мускулю.

2. Вопрос с "алексами" - ваще-то "поперечный". Он проблемен как в полнотексте (нисколько не поможет выбрать "Алекс"-ов, взамен Алекс сеевых... именно так с очепятками), так и в любом другом виде. Тут есть некоторая "засада", в том что regexp не работает с кривыми кодировками в Мускуле... или мне его заточить не удалось... но, в целом, проблема - сильно поперечна. :)

По большому счету - это проблема "утерянного контекста".. увы, но утраченная (а равно и отсутствующая изначально) информация - восстанавливается только частично и не всегда. Собственно это - и есть основная проблема ИИ. (см. Вейнценбаум "вычислительные машины и человеческий разум" 197.. год дословно название не помню, примерно в то время и читал, см. поисковик: "Элиза").

... остальное - "мелочи". :)
...
Рейтинг: 0 / 0
09.04.2013, 20:38:35
    #38219458
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Arhat109,

да, кстати, если вы хотите найти именно Алексов, то простое сравение вам в помощь. Ни полнотекст, ни Сфинкс, ни лайк с регэкспом - вам не нужны. Хужее когда наиборот... :)
...
Рейтинг: 0 / 0
09.04.2013, 20:38:54
    #38219459
InterSky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Arhat109или так: при нормально спроектированном наборе сущностей и атрибутов к ним, зачем нужен полнотекстовый поиск?
(я ведь вроде как знаю какой атрибут или набор атрибутов ищу - разве сравнения недостаточно? Или like для отбора автокомплитов?)
Я задал дополнительный вопрос автору по его методам, но не ответил на вопрос самого автора. Исправляюсь:
Взять например этот форум, в нём есть Поиск. Ты будешь для этого прикручивать сфинкс или создавать какие-то системы для приведения сообщений к 3НФ? А 99% форумов просто используют полнотекстовый поиск.
Или у тебя страницы веб-сайта хранятся в базе данных. И ты хочешь посетителю дать возможность поиска по сайту - тоже просто делаешь полнотекстовый поиск.

Но если его называть лишним, тогда можно и like назвать лишним. Ведь и его теоретически может заменить ЗНФ. FullText - это удобный функционал который позволяет быстро искать.
А если хочешь вместо FullText создавать своё, то можно спросить - "Зачем нужне MySQL? Ведь я могу создать свою базу!"
А если хочешь прикручивать что-то внешнее более функциональное, то можно спросить - "Зачем нужне MySQL? Ведь я могу поставить Oracle!"

P.S. Сфинкс кстати далеко не на всех хостингах стоит.
...
Рейтинг: 0 / 0
09.04.2013, 20:49:34
    #38219465
InterSky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Arhat109Есть РТФМ. Нормальная, понятная дока на русском. В т.ч. и "прикручивается как плагин (или чего там не помню) к Мускулю.
А можно ссылочку? Когда-то искал литературу, но на русском языке нету ни одной книги.
Да и описания нету, только мануал по настройкам, который не описывает возможности движка, а только его конфигурирование.
Несколько статей на Хабре так и не убедили меня в том что он "намного" лучше чем полнотекстовый.

Тех же Александров мне приходится искать через свои подмены в запросах.
Тоесть если ищем Александра, то ищется Александр и Алекс
Если ищем Алексея, то ищется Алексей и Алекс
А если ищем Алекса - то просто ищет Алекс
...
Рейтинг: 0 / 0
09.04.2013, 20:50:58
    #38219469
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
InterSky,

Забавные аллегории. В оправдание?... нафига... конечно "можно". Можно ваще ничего не кодить да и жить можно "на ветках" (просто продолжил)... :)

По сути:
1. Сфинкс - специализированное средство для сложного поиска. Полноценное и функциональное (как и всё специализированное). Не для рекламы. Просто как раз, когда надо "что-то и где-то" или "как-то потребовалось" - самое то воспользоваться специализированной "лопатой".

2. Когда есть(!) полнотекст - почему бы и НЕ воспользоваться (причина см. п.1.)... но вот утверждать, что когда его нет - "плохо" - уже далеко не факт. отсутствие "упрощенной лопаты", никак не означает "плохо"... возьмите нормальную. :)

3. "взять этот форум"... думаю он тут и пашет... хотя не знаю, утверждать не буду. авторы поправят.

4. лайк - никак нельзя назвать "лишним" - это поиск по части индекса... простой и незамысловатый... без него набор операций будет магко скажем "не полон". Удивительно, что вы этого не понимаете. :)
...
Рейтинг: 0 / 0
09.04.2013, 20:53:18
    #38219471
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
InterSky,

ссылку не дам, я их не храню. Есть родной сайт... там есть полноценная дока (может вы её называете по параметрам?!?), есть фак и много другой ерунды... попробуйте читать вдумчиво... мне вполне хватило чтобы настроить и "поиграться"...
...
Рейтинг: 0 / 0
09.04.2013, 23:32:24
    #38219585
InterSky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Arhat109Забавные аллегории. В оправдание?... нафига... конечно "можно". Можно ваще ничего не кодить да и жить можно "на ветках" (просто продолжил)... :)
С таким же успехом можно сказать что MySQL это жалкое подобие базы и что нормальная только Oracl со своей интегрированной бизнеслогикой. В оправдание?

Arhat1091. Сфинкс - специализированное средство для сложного поиска. Полноценное и функциональное (как и всё специализированное). Не для рекламы. Просто как раз, когда надо "что-то и где-то" или "как-то потребовалось" - самое то воспользоваться специализированной "лопатой".
А что подразумевается под "сложым поиском"?
Если он, как при поиске в Google, может искать в неправильных формах языка - это сложность (причём это не функционал базы данных исать также Алексов когда человек написал что ему нужен Александр)
А если искать текст, как поиск в данном форуме - это задача полнотекстового поиска.


Arhat1092. Когда есть(!) полнотекст - почему бы и НЕ воспользоваться (причина см. п.1.)... но вот утверждать, что когда его нет - "плохо" - уже далеко не факт. отсутствие "упрощенной лопаты", никак не означает "плохо"... возьмите нормальную. :)
Тут очень просто. Есть автомобиль - быстрый, удобный, в нём есть пассажирские места и есть багажник.
Но кто-то говорит - "Да ну нафиг, надо брать маршрутку, она надёжней, правда в ней нету багажника, но это не проблема, потому что можно прикрутить фаркоп и докупить прицеп, и ездить на маршрутке с прицепом. Правда не по всем дорогам ты на нём проедешь, но это круче, потому что прицеп профессиональный".
Да, в иноде ты был ограничен и был вынужден искать что прикрутить или молиться чтобы это входило в услуги хостинга.

Arhat1093. "взять этот форум"... думаю он тут и пашет... хотя не знаю, утверждать не буду. авторы поправят.
Ну дай аргументы почему ты думаешь что тут он пашет. 99% форумов работают на полнотекстовом.

Arhat1094. лайк - никак нельзя назвать "лишним" - это поиск по части индекса... простой и незамысловатый... без него набор операций будет магко скажем "не полон". Удивительно, что вы этого не понимаете. :)
Любой назовёт лишним то что не использует. Для меня лайк лишний, потому что я больше использую регулярные выражения.
Но только что за глупость ты говоришь по поводу того что "лайк это поиск по части индекса"?
Какое отношение лайк к индексу имеет?
Лайк в случае "%..." ищет переберая весь текст.
Лайк в случае "...%" ищет как и обычный поиск, побайтно, с той лишь разницей что при "=" идёт сравнение до первого несовподения, а при like "...%" если несовподение не найдено до достижения "%" то строка считается совпавшей. Разница между "like" и "=" всего в одну проверку if.


Arhat109мне вполне хватило чтобы настроить и "поиграться"...
Так вначале надо понять - что она вообще предлагает тебе.
А уже потом, если подходит, тогда настраивать и играться...
...
Рейтинг: 0 / 0
10.04.2013, 06:42:06
    #38219664
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
InterSky, тема конечно холиварная, но все-таки поначалу, вроде как удалось в него не свалиться. Давайте придержимся "тенденции" :)

"На вкус и цвет - товарищей нет". Кому и что "нравится" - аргумент сильный и без возражений. Поэтому отвечу только на ту часть, которую считаю заблуждением:

1. Под "сложным", понимаю любой многозначный поиск по сложному критерию ранжирования найденного.

Например, мне надо найти "дверь металлическая" в товарной базе. Но, оно может быть как в тексте вида товара, так и в тексте наименования параметра (я же изначально НЕ знаю "где" искать!), так и в тексте его значения, так и в текстах дополнительных описаний. Но, мне надо выдать результат "в зависимости" от места найденного: сначала те, которые в одном режиме, потом другие... да ещё и с учетом веса (полезности) остального содержимого в таблицах связи... например товарные строки рекламодателей (атрибут сущности из другой БД даже!) должны выходить раньше (и вполне может оказаться что их и достаточно!) чем "прочих"... отключая при этом часть(!) формулы ранжирования "на лету"... какой такой "полнотекст"?

Вот для таких задач и нужен Сфинкс. Ему можно сказать примерно так: "ищи тут с таким весом, тут с таким или тут. но, если тут есть то-то, то выдачу пересортируй так-то, оставь столько-то, добавь/исключи это и используй ещё такую формулу доп.ранжирования на основе вот этой выборки из моего результата, отдай мне ключи от найденного по которым, я вытащу то что мне на самом деле нужно".

2. "лишнее" - это не то что вам не нужно, а то что избыточно. То есть оно вроде как есть, но задачу можно (и качественнее) решить другими (базовыми) средствами. Так вот, лайки - необходимы. Поиск по части - не решается без них никакими базовыми средствами. Это часть базового интсрументария. А вот "полнотекст", впрочем как "сфинкс" - дополнительный инструментарий. Полноту(!) операций над данными - он не улучшает ни насколько. Только упрощает (что вы и сами понимаете, я надеюсь).

А все остальное - да. На вкус и цвет - товарищей нет. Кому-то удобен мерс... а для кого-то ока - потому что в любую дыру влазит, куда мерсу и не снилось... а кому-то велосипед, его на балкон поставить можно. Каждый инструмент обладает своими уникально-полезными фичами. И, ровно до тех пор, пока они для вас не стали определяющими - собственно вопрос предпочтений.

Так вот, возвращаясь к теме: где полезен полнотекст (там где, нельзя решить задачу лайками, даже перестроив БД)? Вы пока на него тоже так и НЕ ответили. Ваша позиция - УДОБНО.

Это нормально, но я спрашивал о другом. :)
...
Рейтинг: 0 / 0
10.04.2013, 06:52:02
    #38219667
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Arhat109,

поясню, почему вопрос именно в такой трактовке: рядом в теме, один (убогий) движок движок указан как ПРЕДПОЧТЕНИЕ продвинутому движку ИЗ-ЗА этого функционала (по сути и только!). То есть "сознательно жертвуем всем из-за"...

Это - важно. Если функционал - необходим (без него никак), то моё высказывание там ("кому он нужен") - неверно. Стало быть я - не знаю чего-то важного (а это - уже вопрос моей квалификации)...

"убогий" - потому что НЕ обеспечивает необходимых требований по работе РСУБД даже "базовых". По большому счету - это совсем не движок РСУБД... так, инструмент хранения массивов. Единственное достоинство - скорость чтения (в ущерб всему остальному).

вот поэтому (поскольку может оказаться вопросом квалификации) и озадачился, где, в каких задач "без полнотексту" - ну никак и нужен Исам.

Ответа пока так и не получил. Получается, что "жертва": надежности(внешние ключи), многопользовательности изменений (транзакционность) - приносится в угоду УДОБСТВУ программирования... а даже не пользователя.

Пока вывод такой. Грустно. Г-код, получается не только "рулит", но и является стандартом "де факто", уже.
...
Рейтинг: 0 / 0
10.04.2013, 07:03:09
    #38219670
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Arhat109Единственное достоинство - скорость чтения (в ущерб всему остальному).Не единственное! Оно ещё умеет быстро вычислять count(*) (без фильтра)
...
Рейтинг: 0 / 0
10.04.2013, 16:02:38
    #38220610
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
tanglir,

точно, забыл.

Кто-то спрашивал как "оно тут": проверил. Местный поиск команд сфинкса в поисковой строке - не понимает. Похоже что "полнотекст"... гы. :)
...
Рейтинг: 0 / 0
18.07.2013, 18:00:00
    #38336053
didgik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Народ, а какие еще есть системы полнотекстового поиска из современных?
Сейчас у меня myIsam табличка с новостями, в подавляющем боьшенстве на русском, и fulltext поиск.
Задание дали такое: найти/сделать новый поисковик...
Т.е. сначала составить описание некоторых поисковиков с теми фичами которые они могут предложить и недостатками.
Вобщем то кроме сфинкса я пока ничего не нашел подходящего.
...
Рейтинг: 0 / 0
18.07.2013, 18:03:41
    #38336061
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
APACHE Lucene например. но сфинкс все равно лучше.
...
Рейтинг: 0 / 0
02.08.2013, 17:32:12
    #38353427
didgik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск
Ага, еще некий Xapian нашел по ходу дела, но решил таки сфинкс попробовать.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Полнотекстовый поиск / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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