【问题标题】:How to do full text search in Adobe AIR applications?如何在 Adob​​e AIR 应用程序中进行全文搜索?
【发布时间】:2011-07-12 04:30:34
【问题描述】:

似乎 AIR 没有与强大的 FTS module for Sqlite 打包在一起(它是一个热门的 requested feature

我可以使用哪些其他替代方法?我希望能够进行简单的布尔和短语查询。对词干的支持会很好,但不是必需的。我的目标是移动平台。

到目前为止,我已经想到了三个选项:

  1. 编写一个简单的倒排索引和一个记分器
  2. 在服务器端进行搜索(最后的手段 b/c 它会破坏离线功能)
  3. 不知何故用 AIR 安装 FTS 模块。谷歌搜索的第一个迹象是它不可行(看起来模块加载在空中被禁用)

还有其他选择吗?

【问题讨论】:

  • 只是出于好奇,您打算搜索多少数据?
  • 我怀疑您是否会在设备上存储大量数据,因此只需一个简单的搜索算法就足够了。大多数应用都会在服务器端搜索任何稍微复杂的东西。
  • AFAIK FTS 旨在挖掘大量文本,这里不是这种情况..
  • FTS 对于 1MB 的数据来说太过分了。你可以为这么少的数据编写一个平面文件解析器,它会在移动 CPU 上以足够快的速度产生结果。不是我建议,但 LIKE / REGEXP 应该绰绰有余。只需编写一些简单的存根即可将英文查询转换为您的 REGEXP
  • 这两个问题是正交的。评分、邻近词组搜索、词干提取、模糊搜索等功能即使对于小型数据集也很有用。

标签: apache-flex sqlite full-text-search air


【解决方案1】:

我只需在数据库中的相关表/列上进行简单的正则表达式搜索,然后进行相应的排序(按日期?)。

【讨论】:

  • 按日期排序对我的情况没有意义。正则表达式适用于最简单的查询(1 个术语)。如果它不止一个术语,那么它可能很快就会丑陋
  • 为什么会变丑? SELECT * FROM SOMETHING WHERE description REGEXP 'firstTerm|secondTerm';
  • +1 - 包含日期并不排除答案的有效性,而且答案对于 1MB 的数据来说绰绰有余。
  • 如果是任意列,则搜索所有列。如果要进行邻近搜索,请将查询拆分为单个单词并按出现次数对结果进行排名。您要求的高级功能不是 SQLite FTS 中包含的事件。你不是谷歌,你只是在搜索一大堆数据,我以前做过,真的不难。您正在寻找一个您找不到的过于简单、过于高级的功能集。
  • 抱歉,您的所有假设都是错误的。 1) FTS 仅对大型数据集有用(omg google scale!!) 2) “将查询拆分为单个单词并按出现次数对结果进行排名”。这是好老手挥手。也许您应该刷新或学习信息检索的基础知识。 3)“您要求的高级功能不是 SQLite FTS 中包含的事件”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 2010-10-17
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多