如何使用Sequelize实现PostgresQL tsvector进行全文搜索?

时间:2017-08-23 16:38:13

标签: postgresql sequelize.js

我正在阅读本教程: https://www.digitalocean.com/community/tutorials/how-to-use-full-text-search-in-postgresql-on-ubuntu-16-04

建议将document列添加为tsvector并对其应用索引。

ALTER TABLE news ADD "document" tsvector;
CREATE INDEX idx_fts_search ON news USING gin(document);
SELECT title, content FROM news WHERE document @@ to_tsquery('Travel | Cure');

如何使用sequelize实现document列?没有tsvector数据类型:http://docs.sequelizejs.com/variable/index.html

(这是试用Knex.js的好时机吗?)

2 个答案:

答案 0 :(得分:1)

Sequelize 6.5.0+ 版支持 TSVECTOR 数据类型。但是到目前为止我还没有任何文档可以找到,所以:

声明:

sequelize.define('User', {
  myVector: { type: DataTypes.TSVECTOR },
  ...
})

填充它:

User.myVector = sequelize.fn('to_tsvector', 'My Content About Travel and Apparently Some Cures')

在查询中使用它:

User.findAll({
  where: { 
    myVector: { [Op.match]: sequelize.fn('to_tsquery', 'Travel | Cure') }
  }
})

探索拉取请求以获取更多详细信息:https://github.com/sequelize/sequelize/pull/12955

答案 1 :(得分:0)

Please made the changes as per your requirements after button click. <script> $(function(){ $('button[name=proces]').click(function(){ var id= $(this).attr("id"); //some action here //ex: window.location.href="<put your site url>?id="+id; //or an ajax function }); }); </script> <?php $select_order = "SELECT ORDER_NO, DELI_NO, INV_NO, DELI_DT, AMOUNT FROM ORDER WHERE ORDER_NO = '$text_input_order'"; $exec_order = odbc_exec($connSQL, $select_order); while(odbc_fetch_row($exec_order)) { $get_order_no = odbc_result($exec_order, "ORDER_NO"); $get_deli_no = odbc_result($exec_order, "DELI_NO"); $get_inv_no = odbc_result($exec_order, "INV_NO"); $get_deli_dt = odbc_result($exec_order, "DELI_DT"); $get_amount = odbc_result($exec_order, "AMOUNT"); ?> <tr> <td><? echo $get_order_no;?></td> <td><? echo $get_deli_no ;?></td> <td><? echo $get_inv_no ;?></td> <td><? echo $get_deli_dt ;?></td> <td><? echo $get_amount ;?></td> <td><input type="button" id=".$get_inv_no." value="proces" name="proces"></td> </tr> <? } 之前尝试UPDATE news

CREATE INDEX