Как реализовать полнотекстовый поиск с Sail.js а MySQL?

#mysql #node.js #full-text-search #sails.js #waterline

#mysql #node.js #полнотекстовый поиск #sails.js #ватерлиния

Вопрос:

Я не думаю, что Waterline в настоящее время поддерживает эту функцию.

Итак, какие другие пакеты npm мне нужно установить, чтобы разрешить пользователю использовать полнотекстовый поиск в приложении?

Я хочу, чтобы мои пользователи вводили ключевые слова одним вводом, а затем сервер возвращал отфильтрованные данные из более чем одного столбца в более чем одной таблице, указанной мной в базе данных.

Мое веб-приложение использует Angular.js , Sails.js и MySQL.

Ответ №1:

Вы имеете в виду синтаксис «MATCH»?

Waterline предоставляет вам такие функции, как find(), findOne(), … они работают с любой базой данных, которую вы используете. Если вы хотите получить доступ к синтаксису, который не реализован в Waterline (часто потому, что он поддерживается не всеми базами данных), вы можете использовать query() -function (postgresql / mysql) или native() -function (mongodb):

 Foomodel.query("SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('"   var  "')", function(err,result){
   if(err){
     return console.log(err);
   }else{
     console.log(result);
   }
});
 

Смотрите: http://beta.sailsjs.org/#/documentation/reference/Models/Model-Methods/query.html

Комментарии:

1. Ваш ответ весьма вдохновляет при работе с простыми сценариями, хотя, кстати, следует избегать внедрения SQL. Я думаю, мне нужно что-то более мощное, я упоминал, что мне нужно получать результаты запросов из более чем одной таблицы, если я использую чистый SQL, все будет некрасиво. Итак, вы когда-нибудь пытались объединить полнотекстовую поисковую систему с Sails.js , что-то вроде: foragejs.net ?

2. Чтобы предотвратить внедрение SQL, я рекомендую следовать этой документации github.com/balderdashy/waterline-docs/blob/master/queries /…