Java 列处的全文搜索Sqlite查询';s的起始字符

Java 列处的全文搜索Sqlite查询';s的起始字符,java,android,sqlite,full-text-search,Java,Android,Sqlite,Full Text Search,我有一个关于从列字符开始创建文本搜索查询的问题。例如:我有一个表“BOOK”,其中有一列“TITLE”。我在“BOOK”表中有3行,其中的“TITLE”值是:“ANDROID应用程序”、“ANDROID应用程序开发”和“ANDROID应用程序编程” 现在,当我的输入为“ANDROID应用程序”时,我需要所有3行匹配。当我键入“ANDROID应用程序”时,我需要两行匹配:“ANDROID应用程序”和“ANDROID应用程序编程”。当我输入'APP'或'APPLICATION'时,我不需要匹配行(因

我有一个关于从列字符开始创建文本搜索查询的问题。例如:我有一个表“BOOK”,其中有一列“TITLE”。我在“BOOK”表中有3行,其中的“TITLE”值是:“ANDROID应用程序”、“ANDROID应用程序开发”和“ANDROID应用程序编程”

现在,当我的输入为“ANDROID应用程序”时,我需要所有3行匹配。当我键入“ANDROID应用程序”时,我需要两行匹配:“ANDROID应用程序”和“ANDROID应用程序编程”。当我输入'APP'或'APPLICATION'时,我不需要匹配行(因为我们希望从列值的开始字符开始搜索)

我读过SQLite FTS文档,但我不知道如何使用前缀查询、短语查询。。。与AND一起,还是不操作来解决我的问题?任何人都可以给我一个合适的查询语法吗?

请尝试以下内容:

String name = your book name which entered by search box;

String sql ="select "+TITLE+" from "+BOOK+" where TITLE like '"+ name +"%'";

FTS无法从列值的开头进行搜索。 (实际上,它可以,但这是没有文档记录的,在Android中也没有启用。)

要从头开始搜索,必须使用
如'pattern%'

如果你想让它变得高效,你必须将它与普通表和不区分大小写的索引()一起使用。

FTS说文本搜索查询使用MATCH而不是LIKE。作为您的sql字符串,我认为当我在搜索框中键入'APPLICATION'时,两行将匹配查询:'ANDROID APPLICATION PROGRAMMING'和'ANDROID APPLICATION'。但是我不需要行匹配,因为我想从列值的起始词开始检查。是的,现在检查我编辑的答案。它将根据您的需要进行搜索。正如我前面提到的,全文搜索使用匹配而不是喜欢,因为使用喜欢的搜索时间太长。不幸的是,使用MATCH的FTS不支持语法“%”任何其他想法?当您仅从一开始搜索时,为什么要使用全文搜索表?因为我的应用程序需要该功能:)现在我有了一个想法。我在结果中创建了一个带有additionoffsets列的查询,并检查offsets字符串中的第三个整数(将匹配的位置指示为前面提到的SQLite FTS文档)。如果该整数等于零,则表示字符串在开头匹配。但是我无法创建查询,因为结果中没有偏移量列?你能给我举个例子吗?