Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android上搜索非结构化文本的库_Android_Full Text Search - Fatal编程技术网

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

在Android上搜索非结构化文本的库,android,full-text-search,Android,Full Text Search,我正在编写一个Android应用程序,需要快速搜索大量文本。文本是固定的;我想离线计算索引并随应用程序一起发布。以下是对搜索库的要求(数字1-5至关重要): 必须支持Unicode字符集 搜索需要在文本中查找任意子字符串(不仅仅是术语或术语前缀) 搜索需要返回所有匹配项 库应该尽可能轻。特别是,应该可以去掉库的索引(和其他)部分,并仅使用搜索API打包应用程序 图书馆许可证必须允许其用于专有的组合作品 不需要进行形态学分析(词干分析)或停止单词处理 通配符和/或正则表达式搜索很好,但不是必需的

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

  • 必须支持Unicode字符集
  • 搜索需要在文本中查找任意子字符串(不仅仅是术语或术语前缀)
  • 搜索需要返回所有匹配项
  • 库应该尽可能轻。特别是,应该可以去掉库的索引(和其他)部分,并仅使用搜索API打包应用程序
  • 图书馆许可证必须允许其用于专有的组合作品
  • 不需要进行形态学分析(词干分析)或停止单词处理
  • 通配符和/或正则表达式搜索很好,但不是必需的
  • 近距离搜索也不错
  • 同样,布尔搜索
  • FTS3(与SQLite一起提供)对于需求4来说非常好,但不幸的是它不能满足需求2。(它可以找到术语前缀,但不能找到后缀——搜索“eat”可以找到“eats”,但不能找到“seat”。)

    我看过很多图书馆,包括Lucene、Minion和egothor。它们似乎都有我不需要的强大功能。我也有这样的印象(尽管这可能是错误的),那就是很难对这些库进行分区并打包搜索API。(我还听说很难让Lucene在Android上工作,因为它依赖于java.rmi,而Android的java不包括它。)


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

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

    也许SQLite FTS3的自定义标记器对您有用?@JuozasKontvainis-我先看了一下。有两个问题。首先,自定义标记器只能用于更改被视为标记的内容;它不能改变FTS3的基本操作。从我所读到的内容来看,任何形式的标记化都不能解决基于标记的索引的基本限制:它可以用来查找标记前缀,但不能查找后缀。第二,我甚至不知道在Android版本的SQLite中使用自定义标记器是可能的。这很有趣,但我不知道这是我当前项目朝着正确方向迈出的一步。据我所知,Lucy包含Lucene的所有功能,包括所有索引构建基础设施。仅仅因为它是用C语言而不是Java语言编写的,所以去掉这些东西看起来并不容易。另外,Java比C(需要使用NDK)更适合Android应用程序。但是很高兴知道这件事。谢谢