【问题标题】:DB2/400 SQL : FullTextDB2/400 SQL:全文
【发布时间】:2019-03-11 17:31:20
【问题描述】:

SQL DB2/400:是否有人尝试使用全文。

如果我能有一个sql示例代码,那就太好了。

例如,我想将它与 clob 列一起使用。

非常感谢

【问题讨论】:

  • 你说的全文是什么意思?我不确定 DB2/400 是否有全文搜索... DB2 for i5 我相信引入了支持全文搜索的 DB2 Text ExtenderDb2 OmniFind 取代了 IBM i 的 v6(?) 中的那些,并且是该平台的最新版本 (v7.3) 支持的产品,以前称为 AS/400。
  • 您真正想要完成的是什么?你能提供示例输入和所需的输出吗?

标签: sql full-text-search db2-400 full-text-indexing


【解决方案1】:

这会从 mylib.myfile[mytext] 中提取所有以空格分隔的单词 并将它们放入一个有两列的表中。我将字长限制为 15,因为当用户输入超过 15 个字符的字时,我可能已经在 15 日找到了匹配项,并向用户提供了一个列表。

我从互联网上复制了这种技术。

CREATE TABLE mylib.myidx AS
(                                   
  WITH SPLITTER (ID, START, E, SECTION, ORIGINAL, NUM) AS 
  ( SELECT UID, 1, LOCATE(' ', mytext), CAST('' AS VARCHAR(8000)), mytext, 0  
      FROM mylib/myfile                                               
    UNION ALL
    SELECT ID, E + 1,
           CASE WHEN LOCATE(' ',ORIGINAL, E + 1) > 0
                THEN LOCATE(' ', ORIGINAL, E + 1)
                ELSE LENGTH(ORIGINAL) + 1
             END,
           SUBSTRING(ORIGINAL, START, E - START), 
           ORIGINAL, NUM + 1
      FROM SPLITTER
      WHERE E > START
  )                 
  SELECT ID AS UID                                                 
        ,CAST(SECTION AS VARCHAR(15)) AS SECTION                         
    FROM SPLITTER
    WHERE LENGTH(SECTION)>1                                 
)
WITH DATA;            

【讨论】:

  • 谢谢!我不明白这个语法。 « Splitter » 是 SQL 关键字吗?我了解您在物理表上创建索引。是否可以在 clob 列上使用这种技术?非常感谢您的帮助!
  • 第一个选择联合回到自身到第一个单词的末尾等等。
  • @JchristopheCherid SPLITTER 将在答案 sql 的顶部定义。
  • 嗨,谢谢你的回答 谁能告诉我“OmniFind Text Search Server for DB2 for i”是免费的,还是我们必须为此付费?
  • 嗨@danny117 我正在处理你的 SQL 请求,它非常重要。您是否认为有一种方法可以在每次在“mylib/myfile”中添加新记录时自动更新您的“mylib.myidx”?非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
  • 2014-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多