|
|
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Вот тоже, решил озадачится теорией. В соседней ветке, прописали его как достоинство для движка MyIsam... а нужен ли он ваще? или так: при нормально спроектированном наборе сущностей и атрибутов к ним, зачем нужен полнотекстовый поиск? (я ведь вроде как знаю какой атрибут или набор атрибутов ищу - разве сравнения недостаточно? Или like для отбора автокомплитов?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 21:29:03 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Arhat109 В соседней ветке, прописали его как достоинство для движка MyIsam...Начиная с 5.6, реализовано и для InnoDB. Arhat109нужен ли он ваще?Да. Arhat109или так: при нормально спроектированном наборе сущностей и атрибутов к ним, зачем нужен полнотекстовый поиск? Ты никогда не пробовал использовать расширенный язык запросов, например, на гугле? и хоть там всё делается совершенно иначе, суть та же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 21:34:46 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Akina, я пользую расширенный язык сфинкса, вполне устраивает, когда надо искать "хоть что-то, хоть где-нибудь". Но само применение такому режиму поиска - имхо, весьма узкое. Гораздо чаще, надо выбрать "похожие" сущности... причем вполне конкретные, причем степень похожести привязана к соответствующим атрибутам, а при нормальной разбивке - решается обычным доступом по ключам. Ваще без поиска. Собственно почему и спросил: есть ли какие-то ещё задачи, которые без "полнотекста" НЕ решаются или решаются через .опу? (сколько видел применений, правда не так много... мож с десяток, все они были от неумения организовать БД) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 06:19:53 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Arhat109, поясню на примере. Адресно-Телефонная База Предприятий и Сотрудников - фактически основа любой учетной системы и СРМ-ок разного рода. Содержит море текстовой инфы, и может быть в примитиве реализована как куча текстов. Поиск "Вася Пупкин" может выдать и персону, с личными данными, и сотрудника с должностью и фирмой или ваще с послужным списком фирм, и контрагента и т.д. но! стоит привести всё это чудо к, хотя бы 3НФ... и усё. Нет никакого поиска. Потому что текстов "раз два и обчелся": есть Вася - в справочнике имен да Пупкин в справочнике фамилий, да "ИП Вася Пупкин" в справочнике названий фирм... а всё остальное - выборка по найденным ключам. Итого 3 лайка и выборки по ключам. Нет? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 06:29:06 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Arhat109Arhat109, поясню на примере. Адресно-Телефонная База Предприятий и Сотрудников - фактически основа любой учетной системы и СРМ-ок разного рода. Содержит море текстовой инфы, и может быть в примитиве реализована как куча текстов. Поиск "Вася Пупкин" может выдать и персону, с личными данными, и сотрудника с должностью и фирмой или ваще с послужным списком фирм, и контрагента и т.д. но! стоит привести всё это чудо к, хотя бы 3НФ... и усё. Нет никакого поиска. Потому что текстов "раз два и обчелся": есть Вася - в справочнике имен да Пупкин в справочнике фамилий, да "ИП Вася Пупкин" в справочнике названий фирм... а всё остальное - выборка по найденным ключам. Итого 3 лайка и выборки по ключам. Нет? :) Мне как то нужен был -- анализ ключевых слов на определеном наборе сайтов -- ну скажем 3-5 тысяч страниц по 100-2000 буковок. Сайтты выкачали в ТЕХТ колонку, потом сделал фултекст индекс и легким движением , брюки превратились в матрицу встречаемости ключевых слов по сайтам. 3НФ була бы здесь изобретением велосипеда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 06:52:36 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
javajdbc, вот и в вашем сообщении, ключевик "как-то нужен был" :) меня как раз и интересует где ещё, кроме "хоть как-то, хоть где-то"... ", ваше: "как-то нужен был" - в этот круг задач входит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 07:25:56 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Arhat109Вот тоже, решил озадачится теорией. В соседней ветке, прописали его как достоинство для движка MyIsam... а нужен ли он ваще? или так: при нормально спроектированном наборе сущностей и атрибутов к ним, зачем нужен полнотекстовый поиск? К нормальному проектированию БД этот вопрос никак не привязан. Теория такова: индексы есть простые и многомерные (полнотекстовый индекс является частным случаем многомерного индекса). У этих двух классов индексов есть набор операций, которые они могут быстро выполнять. У обычных индексов это -- равенство значению, попадание в непрерывный диапазон значений, и поиск по префиксу значения (совпадение префикса с заданным). У полнотекстового -- включение слова в поле, порог частотности появления слова в поле, и другие. Это просто разные операции, и всё, соответственно, в зависимости от того, как тебе нужно быстро искать, тебе нужны те или иные индексы. Нормализация БД и нормальные формы тут даже и не очень при чём, поскольку полнотекстовые индексы на самом деле как бы нарушают 1НФ, рассматривая поле не как атом, а как набор слов. Ну и понятно, почему у тебя возник такой вопрос -- бывает, что разработчики мало внимания уделяют разработке самой БД, а огрехи в её дизайне лечат прилепленным сверху полнотекстовым поиском. ПП -- мощное средство, конечно, оно может "залечить" многое в плохой БД, но у него есть и слабая сторона -- на реальном OLTP поддержка полнотекстового индекса дорога, и не всегда вообще возможна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 11:23:01 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Arhat109 Собственно почему и спросил: есть ли какие-то ещё задачи, которые без "полнотекста" НЕ решаются или решаются через .опу? Конечно же, есть. Могу привести пример. БД патентов и статей в области химической промышленности (со всего мира за наверное полвека). Всё это классифицировано, разложено по полочкам. Главное поле -- текст патента или статьи. Задача -- искать статьи на заданные темы, например, о метане. Или о синтезе этилового спирта. Ты же не будешь анализировать текст статьи или патента и делать его полную семантическую модель, чтобы уложить её в таблицы и потом по ним искать. Это и сложно, и чуть ли почти невозможно на современном этапе развития техники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 11:28:19 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
MasterZiv, :) это первое что пришло в голову. Собственно эта сторона вопроса меня всегда и интересовала больше всего... есть какой-никакой опыт в "раскладывании" текстов товарных строк в такие модели... уже есть. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 13:28:41 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Интересно про сфинкса: Предположим он приводит какие-то слова к каким-то значениям. Допустим слова Москва и Moscow он будет считать одним и тем же. Грубо говоря это забито до анализа страницы, и индексируя он наверняка с своём индексе превратит текст "Это Москва река" в "Это Moscow река". И тоже самое он сделает с поисковым запросом - ищет пользователь Москва или Moscow - он будет искать Moscow. А что будет если в тексте написано "Москварека"? И интересно с именами в телефонном справочнике (раз уж вы затронули эту тему). Есть имена: Алекс Алексей Александр при этом все Алексеи и все Александры считают что именно их имя сокращённо пишется как Алекс. И нам надо найти Александра в телефонной базе. Но он может быть записан и как Алекс. А если мы будем искать Алексов, то мы найдём Алексеев, которые нам не нужны. Как это решается в вашем случае и в случае сфинкса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 20:12:59 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
InterSky, 1. Сфинкс настраивается "вдоль и поперек", а кроме этого имеет свой внутренний язык запросов, умеет делать групповые запросы и выдавать результат несколькими различными способами... уж всяко богаче и круче полнотекста. Как он там внутрях строит свой "многомерный" индекс - лично мне по-барабану. Есть РТФМ. Нормальная, понятная дока на русском. В т.ч. и "прикручивается как плагин (или чего там не помню) к Мускулю. 2. Вопрос с "алексами" - ваще-то "поперечный". Он проблемен как в полнотексте (нисколько не поможет выбрать "Алекс"-ов, взамен Алекс сеевых... именно так с очепятками), так и в любом другом виде. Тут есть некоторая "засада", в том что regexp не работает с кривыми кодировками в Мускуле... или мне его заточить не удалось... но, в целом, проблема - сильно поперечна. :) По большому счету - это проблема "утерянного контекста".. увы, но утраченная (а равно и отсутствующая изначально) информация - восстанавливается только частично и не всегда. Собственно это - и есть основная проблема ИИ. (см. Вейнценбаум "вычислительные машины и человеческий разум" 197.. год дословно название не помню, примерно в то время и читал, см. поисковик: "Элиза"). ... остальное - "мелочи". :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 20:35:44 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Arhat109, да, кстати, если вы хотите найти именно Алексов, то простое сравение вам в помощь. Ни полнотекст, ни Сфинкс, ни лайк с регэкспом - вам не нужны. Хужее когда наиборот... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 20:38:35 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Arhat109или так: при нормально спроектированном наборе сущностей и атрибутов к ним, зачем нужен полнотекстовый поиск? (я ведь вроде как знаю какой атрибут или набор атрибутов ищу - разве сравнения недостаточно? Или like для отбора автокомплитов?) Я задал дополнительный вопрос автору по его методам, но не ответил на вопрос самого автора. Исправляюсь: Взять например этот форум, в нём есть Поиск. Ты будешь для этого прикручивать сфинкс или создавать какие-то системы для приведения сообщений к 3НФ? А 99% форумов просто используют полнотекстовый поиск. Или у тебя страницы веб-сайта хранятся в базе данных. И ты хочешь посетителю дать возможность поиска по сайту - тоже просто делаешь полнотекстовый поиск. Но если его называть лишним, тогда можно и like назвать лишним. Ведь и его теоретически может заменить ЗНФ. FullText - это удобный функционал который позволяет быстро искать. А если хочешь вместо FullText создавать своё, то можно спросить - "Зачем нужне MySQL? Ведь я могу создать свою базу!" А если хочешь прикручивать что-то внешнее более функциональное, то можно спросить - "Зачем нужне MySQL? Ведь я могу поставить Oracle!" P.S. Сфинкс кстати далеко не на всех хостингах стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 20:38:54 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Arhat109Есть РТФМ. Нормальная, понятная дока на русском. В т.ч. и "прикручивается как плагин (или чего там не помню) к Мускулю. А можно ссылочку? Когда-то искал литературу, но на русском языке нету ни одной книги. Да и описания нету, только мануал по настройкам, который не описывает возможности движка, а только его конфигурирование. Несколько статей на Хабре так и не убедили меня в том что он "намного" лучше чем полнотекстовый. Тех же Александров мне приходится искать через свои подмены в запросах. Тоесть если ищем Александра, то ищется Александр и Алекс Если ищем Алексея, то ищется Алексей и Алекс А если ищем Алекса - то просто ищет Алекс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 20:49:34 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
InterSky, Забавные аллегории. В оправдание?... нафига... конечно "можно". Можно ваще ничего не кодить да и жить можно "на ветках" (просто продолжил)... :) По сути: 1. Сфинкс - специализированное средство для сложного поиска. Полноценное и функциональное (как и всё специализированное). Не для рекламы. Просто как раз, когда надо "что-то и где-то" или "как-то потребовалось" - самое то воспользоваться специализированной "лопатой". 2. Когда есть(!) полнотекст - почему бы и НЕ воспользоваться (причина см. п.1.)... но вот утверждать, что когда его нет - "плохо" - уже далеко не факт. отсутствие "упрощенной лопаты", никак не означает "плохо"... возьмите нормальную. :) 3. "взять этот форум"... думаю он тут и пашет... хотя не знаю, утверждать не буду. авторы поправят. 4. лайк - никак нельзя назвать "лишним" - это поиск по части индекса... простой и незамысловатый... без него набор операций будет магко скажем "не полон". Удивительно, что вы этого не понимаете. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 20:50:58 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
InterSky, ссылку не дам, я их не храню. Есть родной сайт... там есть полноценная дока (может вы её называете по параметрам?!?), есть фак и много другой ерунды... попробуйте читать вдумчиво... мне вполне хватило чтобы настроить и "поиграться"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 20:53:18 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Arhat109Забавные аллегории. В оправдание?... нафига... конечно "можно". Можно ваще ничего не кодить да и жить можно "на ветках" (просто продолжил)... :) С таким же успехом можно сказать что MySQL это жалкое подобие базы и что нормальная только Oracl со своей интегрированной бизнеслогикой. В оправдание? Arhat1091. Сфинкс - специализированное средство для сложного поиска. Полноценное и функциональное (как и всё специализированное). Не для рекламы. Просто как раз, когда надо "что-то и где-то" или "как-то потребовалось" - самое то воспользоваться специализированной "лопатой". А что подразумевается под "сложым поиском"? Если он, как при поиске в Google, может искать в неправильных формах языка - это сложность (причём это не функционал базы данных исать также Алексов когда человек написал что ему нужен Александр) А если искать текст, как поиск в данном форуме - это задача полнотекстового поиска. Arhat1092. Когда есть(!) полнотекст - почему бы и НЕ воспользоваться (причина см. п.1.)... но вот утверждать, что когда его нет - "плохо" - уже далеко не факт. отсутствие "упрощенной лопаты", никак не означает "плохо"... возьмите нормальную. :) Тут очень просто. Есть автомобиль - быстрый, удобный, в нём есть пассажирские места и есть багажник. Но кто-то говорит - "Да ну нафиг, надо брать маршрутку, она надёжней, правда в ней нету багажника, но это не проблема, потому что можно прикрутить фаркоп и докупить прицеп, и ездить на маршрутке с прицепом. Правда не по всем дорогам ты на нём проедешь, но это круче, потому что прицеп профессиональный". Да, в иноде ты был ограничен и был вынужден искать что прикрутить или молиться чтобы это входило в услуги хостинга. Arhat1093. "взять этот форум"... думаю он тут и пашет... хотя не знаю, утверждать не буду. авторы поправят. Ну дай аргументы почему ты думаешь что тут он пашет. 99% форумов работают на полнотекстовом. Arhat1094. лайк - никак нельзя назвать "лишним" - это поиск по части индекса... простой и незамысловатый... без него набор операций будет магко скажем "не полон". Удивительно, что вы этого не понимаете. :) Любой назовёт лишним то что не использует. Для меня лайк лишний, потому что я больше использую регулярные выражения. Но только что за глупость ты говоришь по поводу того что "лайк это поиск по части индекса"? Какое отношение лайк к индексу имеет? Лайк в случае "%..." ищет переберая весь текст. Лайк в случае "...%" ищет как и обычный поиск, побайтно, с той лишь разницей что при "=" идёт сравнение до первого несовподения, а при like "...%" если несовподение не найдено до достижения "%" то строка считается совпавшей. Разница между "like" и "=" всего в одну проверку if. Arhat109мне вполне хватило чтобы настроить и "поиграться"... Так вначале надо понять - что она вообще предлагает тебе. А уже потом, если подходит, тогда настраивать и играться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 23:32:24 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
InterSky, тема конечно холиварная, но все-таки поначалу, вроде как удалось в него не свалиться. Давайте придержимся "тенденции" :) "На вкус и цвет - товарищей нет". Кому и что "нравится" - аргумент сильный и без возражений. Поэтому отвечу только на ту часть, которую считаю заблуждением: 1. Под "сложным", понимаю любой многозначный поиск по сложному критерию ранжирования найденного. Например, мне надо найти "дверь металлическая" в товарной базе. Но, оно может быть как в тексте вида товара, так и в тексте наименования параметра (я же изначально НЕ знаю "где" искать!), так и в тексте его значения, так и в текстах дополнительных описаний. Но, мне надо выдать результат "в зависимости" от места найденного: сначала те, которые в одном режиме, потом другие... да ещё и с учетом веса (полезности) остального содержимого в таблицах связи... например товарные строки рекламодателей (атрибут сущности из другой БД даже!) должны выходить раньше (и вполне может оказаться что их и достаточно!) чем "прочих"... отключая при этом часть(!) формулы ранжирования "на лету"... какой такой "полнотекст"? Вот для таких задач и нужен Сфинкс. Ему можно сказать примерно так: "ищи тут с таким весом, тут с таким или тут. но, если тут есть то-то, то выдачу пересортируй так-то, оставь столько-то, добавь/исключи это и используй ещё такую формулу доп.ранжирования на основе вот этой выборки из моего результата, отдай мне ключи от найденного по которым, я вытащу то что мне на самом деле нужно". 2. "лишнее" - это не то что вам не нужно, а то что избыточно. То есть оно вроде как есть, но задачу можно (и качественнее) решить другими (базовыми) средствами. Так вот, лайки - необходимы. Поиск по части - не решается без них никакими базовыми средствами. Это часть базового интсрументария. А вот "полнотекст", впрочем как "сфинкс" - дополнительный инструментарий. Полноту(!) операций над данными - он не улучшает ни насколько. Только упрощает (что вы и сами понимаете, я надеюсь). А все остальное - да. На вкус и цвет - товарищей нет. Кому-то удобен мерс... а для кого-то ока - потому что в любую дыру влазит, куда мерсу и не снилось... а кому-то велосипед, его на балкон поставить можно. Каждый инструмент обладает своими уникально-полезными фичами. И, ровно до тех пор, пока они для вас не стали определяющими - собственно вопрос предпочтений. Так вот, возвращаясь к теме: где полезен полнотекст (там где, нельзя решить задачу лайками, даже перестроив БД)? Вы пока на него тоже так и НЕ ответили. Ваша позиция - УДОБНО. Это нормально, но я спрашивал о другом. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 06:42:06 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Arhat109, поясню, почему вопрос именно в такой трактовке: рядом в теме, один (убогий) движок движок указан как ПРЕДПОЧТЕНИЕ продвинутому движку ИЗ-ЗА этого функционала (по сути и только!). То есть "сознательно жертвуем всем из-за"... Это - важно. Если функционал - необходим (без него никак), то моё высказывание там ("кому он нужен") - неверно. Стало быть я - не знаю чего-то важного (а это - уже вопрос моей квалификации)... "убогий" - потому что НЕ обеспечивает необходимых требований по работе РСУБД даже "базовых". По большому счету - это совсем не движок РСУБД... так, инструмент хранения массивов. Единственное достоинство - скорость чтения (в ущерб всему остальному). вот поэтому (поскольку может оказаться вопросом квалификации) и озадачился, где, в каких задач "без полнотексту" - ну никак и нужен Исам. Ответа пока так и не получил. Получается, что "жертва": надежности(внешние ключи), многопользовательности изменений (транзакционность) - приносится в угоду УДОБСТВУ программирования... а даже не пользователя. Пока вывод такой. Грустно. Г-код, получается не только "рулит", но и является стандартом "де факто", уже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 06:52:02 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Arhat109Единственное достоинство - скорость чтения (в ущерб всему остальному).Не единственное! Оно ещё умеет быстро вычислять count(*) (без фильтра) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 07:03:09 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
tanglir, точно, забыл. Кто-то спрашивал как "оно тут": проверил. Местный поиск команд сфинкса в поисковой строке - не понимает. Похоже что "полнотекст"... гы. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 16:02:38 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
Народ, а какие еще есть системы полнотекстового поиска из современных? Сейчас у меня myIsam табличка с новостями, в подавляющем боьшенстве на русском, и fulltext поиск. Задание дали такое: найти/сделать новый поисковик... Т.е. сначала составить описание некоторых поисковиков с теми фичами которые они могут предложить и недостатками. Вобщем то кроме сфинкса я пока ничего не нашел подходящего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2013, 18:00:00 |
|
||
|
Полнотекстовый поиск
|
|||
|---|---|---|---|
|
#18+
APACHE Lucene например. но сфинкс все равно лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2013, 18:03:41 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38218696&tid=1836334]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 208ms |
| total: | 364ms |

| 0 / 0 |
