Форум → Программирование → PHP для идиотов → Морфологический поиск
Морфологический поиск
Страницы: ← Следующая страница →
-
-
-
30 июля 2012 г. 14:09, спустя 1 час 55 минут 19 секунд
elasticsearch
На сколько мне известно elasticsearch это по-сути Lucene и не умеет морфологический поиск
Troy прав, вменяемых аналогов сфинксу пока нет. Либо я плохо искал -
30 июля 2012 г. 14:35, спустя 26 минут 4 секунды
На сколько мне известно elasticsearch это по-сути Lucene и не умеет морфологический поиск
Для lucene есть плагин для морфологического поиска rus/eng. -
30 июля 2012 г. 19:20, спустя 4 часа 44 минуты 56 секунд
Sphinx , выбор очевиден.
Не, postgresql + tsearch2 - самый очевидный выбор -
-
30 июля 2012 г. 22:18, спустя 49 минут 15 секунд
Troy, поиск осуществляется самой БД, как любая другая фильтрация. Нет отдельного процесса, с отдельной конфигурацией, с отдельными запросами, индексами и обращениями к нему.
Просто добавляешь поле вектора, пространственный индекс к нему, да триггер на обновление.
Короче вот вся настройка:
ALTER TABLE blog_article ADD search_tsv TSVECTOR;
CREATE INDEX search_index ON websites_website USING gist(search_tsv);
CREATE TRIGGER blog_article_tsvectorupdate BEFORE INSERT OR UPDATE ON blog_article FOR EACH ROW EXECUTE PROCEDURE tsearch2('search_tsv', 'title', 'body', 'tags');
Вот потом селект:
SELECT * FROM blog_article WHERE search_tsv @@ to_tsquery('stupid dogs') ;
Всё. Естественно селекты можешь делать какие угодно с джоинами, кучей других where и ордерить по релевантности. -
30 июля 2012 г. 22:34, спустя 15 минут 7 секунд
mathete, ты открыл sphinx mysql plugin :DСапожник без сапог -
30 июля 2012 г. 22:39, спустя 5 минут 48 секунд
mathete, ты открыл sphinx mysql plugin :D
+1, SphinxSE делает тоже самое -
30 июля 2012 г. 22:40, спустя 39 секунд
ага. его и имел ввиду :)
mathete, ты открыл sphinx mysql plugin :D
+1, SphinxSE делает тоже самоеСапожник без сапог -
30 июля 2012 г. 22:52, спустя 12 минут 20 секунд
Я ничего не открывал. Я просто показал надежное, эффективное решение.
Если я ничего не путаю, то тот же Sphinx SE, всё равно не нативное дополнение поверх хранилища, а коннектор к тому же отдельному сфинксовскому процессу.
То есть это просто такой сахарок.
А так и имеете отдельный процесс, конфиг и т.д. Да, а чего будет происходить, когда будете джоинить две таблицы - одна Engine sphinxEX, а другая Engine InnoDB, например?
Теперь понятно, почему нет postgresql-sphinx plugin? -
30 июля 2012 г. 23:10, спустя 17 минут 23 секунды
Да, а чего будет происходить, когда будете джоинить две таблицы - одна Engine sphinxEX, а другая Engine InnoDB, например?
думаю все будет ок. просто создастся In-Memory MyIsam heap table как оыбчно да и все, и она уже будет жойниться. думаешь в постгресе чтто совсем концептуально другое?)Сапожник без сапог -
30 июля 2012 г. 23:27, спустя 17 минут 45 секунд
думаю все будет ок. просто создастся In-Memory MyIsam heap table как оыбчно да и все, и она уже будет жойниться. думаешь в постгресе чтто совсем концептуально другое?)
А ну да… Всё очень просто! Я так и вижу планировщик: "У меня миллион записей мне надо сджоиниться с парой таблиц, на каждую построятся In-memory tables, да и ещё законектится по порту 3312 получить айдишники по куску запроса и всё это собрать".
Я один вижу здесь лютый пиздец? Это не сборище костылей?
В postgresql конечно же не так. Там поиск ведется по поддерживаему индексу, а поле представлет собой просто отдельный тип данных. Все джоины совершенно нативны, так как разницы в таблицах нет в этом плане.
Работа с полнотекстовым вектором идет точно также, как датой, например. Это нативный тип данных, к нему есть функции, по нему строится индекс.
Вообще никакого отличия. Чуть сахарного синтаксиса, ну и индекс не btree, а gist (или gin). -
30 июля 2012 г. 23:55, спустя 27 минут 31 секунду
mathete, спорить и ковыряться лень. побрел домой)Сапожник без сапог
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!