【问题标题】:Postgres - Full Text Search to accept emojisPostgres - 全文搜索以接受表情符号
【发布时间】:2016-09-27 15:03:01
【问题描述】:

我想创建一个全文搜索,它接受查询中的表情符号,或其他类型的索引来搜索文本。例如,我有这样的文字:Playa ???????????? @CobolIquique h' 和 PostgreSQL 在表情符号上奇怪地解析它。

调试,使用SELECT * FROM ts_debug('english','Playa ???????????? @CobolIquique h');得到如下结果:

而且我不知道为什么令牌被认为是一个空格符号。如果我调试解析器SELECT * FROM ts_parse('default', 'Playa ???????????? @CobolIquique h');,我只会得到相同的标记,并且标记类型ts_token_type('default') 没有表情符号类型(或类似的东西)。那么,我怎样才能创建一个解析器来用空格正确分割字符串并且不将表情符号视为空格?或如何创建可以在查询中使用表情符号的文本索引?

【问题讨论】:

  • 我不习惯全文搜索,但您是否尝试过使用不同的词典(如 Snowball)?请参阅postgresql.org/docs/current/static/textsearch-dictionaries.html 可能您必须自定义字典(请参阅上一个链接中的示例)。
  • 是的,我尝试过使用不同的字典(我已经根据自己的需要构建了一个),但问题是前面的步骤,即解析器):
  • 你试过CREATE TEXT SEARCH PARSERALTER TEXT SEARCH PARSER吗? postgresql.org/docs/9.6/static/sql-createtsparser.html
  • 我已经阅读了该页面,但我不知道如何个性化解析器(或令牌),我将使用它一段时间
  • 我相信解析器正确地标记了您的字符串,它只是无法将其转换为词位(这并不奇怪)。我认为您自己的解决方案(根据您的需要构建字典)是正确的解决方案?..

标签: postgresql parsing full-text-search emoji


【解决方案1】:

要创建一个不同于默认解析器的新解析器,您应该是一名 C 程序员,并且应该编写自己的 PostgreSQL extension。此扩展应定义以下功能:

start_function();
gettoken_function();
end_function();
lextypes_function();
headline_function(); // optional

例如,您可以检查pg_tsparser 模块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 2013-09-10
    相关资源
    最近更新 更多