用于在Android上搜索非结构化文本的库

时间:2011-08-19 17:31:51

标签: android full-text-search

我正在编写一个Android应用,我需要快速搜索大量文本。案文是固定的;我想离线计算索引并将它们与应用程序一起发送。以下是搜索库的要求(数字1-5至关重要):

  1. 必须支持Unicode字符集。
  2. 搜索需要在文本中找到任意子串(不仅仅是术语或术语前缀)。
  3. 搜索需要返回所有匹配项。
  4. 库应尽可能轻量级。特别是,应该可以删除库的索引(和其他)部分,并仅使用搜索API打包应用程序。
  5. 图书馆许可证必须允许其用于专有的联合作业。
  6. 不需要进行形态分析(词干)或停止词处理。
  7. 通配符和/或正则表达式搜索会很好,但不是必需的。
  8. 邻近搜索也很不错。
  9. 同样布尔搜索。
  10. FTS3(与SQLite一起提供)在要求4方面很好,但遗憾的是不能满足要求2.(它可以找到术语前缀而不是后缀 - 搜索“吃”可以找到“吃”而不是“座椅”。)

    我看过很多图书馆,包括Lucene,Minion和egothor。它们似乎都充满了我不需要的强大功能。我也感觉到(虽然这可能是错误的)我们很难对这些库进行分区,只是打包搜索API。 (我也听说很难让Lucene在Android上工作,因为它依赖于java.rmi,Android的Java不包括它。)

    有没有人知道我所需要(或可以改编)的图书馆?如果库满足要求,我不反对将搜索API从另一种语言移植到Java中。

1 个答案:

答案 0 :(得分:1)

Apache Lucy - 一个松散的Lucene到C的端口 - 可能值得一看。