Stepan
А то!
Stepan
Хотя в nightly ещё не работает
Stepan
Хотя нет, работает же!
Aleksej
но юзать еще рано
Dima
node.js + postgresql реально ли сделать быстрый фултекст поиск по разным аттрибутам + джоины по 5-6 таблиц?
Yuriy
node.js + postgresql реально ли сделать быстрый фултекст поиск по разным аттрибутам + джоины по 5-6 таблиц?
Реально. У меня в проекте используется родной постгресовский FTS через tsvector. Есть поиск по нескольким атрибутам (название лекарства, штрих-код и название производителя, например) + обычно к этому джоинится еще несколько таблиц. Главное — не забывать делать индексы по FTS, и обновлять ее содержимое, когда что-либо из нужных тебе атрибутов меняется. Также экспериментировали с pg_trgm. Поиск на триграммах получается быстрее tsvector, плюс учитывает опечатки. Но мы от него в итоге отказались, т.к. нам важна возможность влиять на веса слов в зависимости от позиции, что умеет tsvector.
Nikolay
Магаз на ноде плохая затея. Слишеом дофига руками придется делать. Лучше взять джангу какую нибудь
Зеро толеранс не про меня. Но как план б конечно хорошо. https://reactioncommerce.com неужели не пробовал никтои
Anonymous
джоины по 5-6 таблиц и быстро как-то не очень сочетается
Anonymous
в принципе
Yuriy
Хотя, исходя из опыта работы с поиском, я горячо призываю использовать что-либо готовое и оттестированное вроде Elasticsearch, Sphynx, Solr и иже с ними, чем писать свои велосипеды :)
Anonymous
тут же зависит от объема данных
Anonymous
вообще чтобы быстро выборку делать можно и в сторону столбиковых DB посмотреть
Dima
данных 10-ки миллионов
Dima
в целом задача, примерно как на сайтах бытовой техники
Dima
найти то то, такого года, такого цвета и тд
Evgeny
сфинкс
Dima
но все нужно по тексту искать
Dima
сфинкс поверх ПГ?
Evgeny
хранилище пофиг где
Evgeny
что вам удобно/приятно и быстро ищет по PK
Dima
этакая денормализация?
Dima
+ этакий сервис синхронизации при обновлении данных
Dima
мне кажется вспотеешь работая с такими данными на изменение
Dima
В целом сейчас выбрали такую дорогу: 1) Отказываемся от решений связанных с тюнюнгом ПГ и денормализацией 2) Поднимаем 2 стэка: 2.1) ПГ + Сфинкс 2.2) Elasticsearch как второе функциональное хранилище + сервис для поиска 3) Всё это тестим и по результатам пишем на "прод"
Evgeny
а зачем жластик для поиска если есть сфинкс?
Evgeny
эластик иногда данные теряет
Dima
а зачем жластик для поиска если есть сфинкс?
затрудняюсь ответить. Как вариант реализации что-ли. Он с логами нам хорошо помогает, мб мы пока ничего лучше придумать не можем.
Dima
сегодня протестим 2 стэка
Evgeny
для логов - да, идеальный выбор. елка, все дела
Dima
лично мне симпотизирует вариант ПГ + сфинкс
Evgeny
я делал рубрикатор как на маркет.Яндексе с поиском и товарами на базе монго и сфинкса - работало быстро на нескольких десятках миллионов товаров и до 1к рпс
Dima
хм если доп условия: — true/false — range — one of — not any of и тд --- сфинкс остается вариантом?
Evgeny
Я.маркет видел?
Evgeny
Вот как там
Anonymous
http://andy128k.blogspot.ru/2012/10/postgresql-sphinx-search.html
Anonymous
Старая, но, вроде норм статейка про PostgreSQL и Sphinx Search
Никита
подскажите плиз. делаю так: set NODE_PATH=./src; && set NODE_ENV=production; && nodemon server.js в server.js делаю console.log(process.env.NODE_ENV) - выводит 'production' но console.log(process.env.NODE_ENV === 'production') => false
Владимир
точно выводит production?
Владимир
сделай console.log(process.env.NODE_ENV)
Владимир
ой
Владимир
console.log(process.env)
Никита
https://i.gyazo.com/03fdad0d4b25464ab3c3296cf773398d.png
Никита
это при set NODE_ENV='production';
Никита
а при set NODE_ENV=production; => NODE_ENV: 'production
Никита
куда вторая кавычка девается
Никита
всё
Никита
разобрался. Спасибо!
Никита
Сделал так: set NODE_PATH=./src; && set NODE_ENV=production && nodemon server.js и почему то NODE_ENV равен 'production '
Никита
сделал trim()
Dima
> set NODE_ENV=production; напрпавильно > NODE_ENV=production правильно
Никита
под виндой?
Sergey
как же меня бесят винды… ((
Dima
лол
Sergey
вечно там проблемы
Dima
под видной не в курсе
Dima
это другой мир какой-то
Никита
основная разработка у меня ASP.NET. тут без винды никак
Dima
Сочувствую
Владимир
может, там двойные кавычки использовать?
Владимир
NODE_ENV="production"
Dima
Можно и так
Dima
Точка с запятой не нужна
Evgeny
И ещё вопрос по вебпаку. вот такая иерархия файлов: https://i.gyazo.com/a156f770383c94bcab6d4f56a7577bfc.png вот так в конфиге вебпака: output: { path: `${__dirname}/public/assets/`, filename: 'bundle.js', publicPath: '/public/assets' } вот такой скрипт в package.json: "production" : "set NODE_PATH=./src; && set NODE_ENV=production && webpack && nodemon server.js" файлы физически в папке лежат, но при открытии страницы: http://localhost:3001/public/assets/styles.css 404 http://localhost:3001/public/assets/bundle.js 404
Никита
webpack-dev-server я думал только при девелопменте юзаетяс
Никита
он же dev
Никита
это из примера с хабра. вот так выглядят скрипты: "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "set NODE_ENV='production' && webpack -p", "webpack-devserver": "webpack-dev-server --debug --hot --devtool eval-source-map --output-pathinfo --watch --colors --inline --content-base public --port 8050 --host 0.0.0.0", "nodemon": "set NODE_PATH=./src; && nodemon server.js" } как в прод запустить я вот не оч понимаю :)
Никита
https://github.com/yury-dymov/habr-app/tree/v2 вот код
Andrey
*глупый вопрос* В server.js express? Папка со статикой ему скормлена? app.use(express.static('public'));
Никита
в src/server.js да, эксперсс
Никита
там я сделал так
Никита
app.use(express.static(path.join(__dirname, '/../public')));
Andrey
Ну и что выведит console.log( path.join(__dirname, '/../public')) ) ? И из примера я не сильно понимаю почему в продакшене set NODE_PATH=./src - указывает на сорцы
Никита
d:\develop\test\public выведет
Никита
а как? просто в server.js который не в src написано: require('server.js'); и при nodemon server.js будет https://i.gyazo.com/a5a407246bd997752d8c79777c9d72db.png
Vitaliy
ооо, узнал очень крутой oneliner! :) http://www.cyberciti.biz/faq/how-to-find-my-public-ip-address-from-command-line-on-a-linux/
Evgeny
имхо запомнить curl 2ip.ru | grep big проще
Yevhenii
Есть какой-то компилятор пхп в ноду?