Android FTS4 sqlite匹配不工作
我在这里尝试了几种方法: 在这里: (我认为是迄今为止最好的教程) 但是,我的搜索返回0个结果 以下是我尝试过的:Android FTS4 sqlite匹配不工作,android,sqlite,Android,Sqlite,我在这里尝试了几种方法: 在这里: (我认为是迄今为止最好的教程) 但是,我的搜索返回0个结果 以下是我尝试过的: String key = "a"; Cursor c = db.query(true, "texts_virtual", new String[]{"id","title_normalized"}, "title_normalized MATCH '"+key+"'",
String key = "a";
Cursor c = db.query(true, "texts_virtual",
new String[]{"id","title_normalized"},
"title_normalized MATCH '"+key+"'",
null, null, null, null, null);
=0结果代码>
String query = "a";
String[] params = {"%" +query+ "%"};
Cursor c = db.rawQuery("SELECT * FROM texts_virtual WHERE title_normalized MATCH ?", params);
=0结果太多
我知道虚拟表正在正常工作,因为我可以这样做:
String queryText = "a"; //here i test other texts and they worked too
String query = "select * from texts_virtual where title_normalized like ? order by number";
String[] params = {"%" + queryText + "%"};
Cursor c = db.rawQuery(query, params);
所以这证明了文本是有效的,不起作用的是查询,但我不知道为什么,不是错误,什么都没有,只有0个结果
同样,在我成功之后,我计划在两列中使用多个术语搜索
用户类型“WordA WordB WordC”
它在2列中搜索每个单词并返回结果,但这是为了将来的任务
编辑
表代码创建:
CREATE TABLE texts (id INTEGER PRIMARY KEY AUTOINCREMENT, title_normalized....);
INSERT INTO texts (id, titulo_normalized...) VALUES (1, 'aaaaaa', ...);
继续进行更多的插入,最后进行虚拟创建
CREATE VIRTUAL TABLE texts_virtual USING fts4(content="texts", id, title_normalized, ..other fields);
我可以使用LIKE查询文本,但不能使用MATCH,MATCH返回0个结果=/
编辑2表格的外观:
Table: texts_virtual
----------------------------
id --- title_normalized
--------------------------
1 --- aaaaaaaaab
2 --- abbbbbbbbb
3 --- bbbbbabbbb
4 --- bbbbbbbbbb
FTS模块搜索单词(确切定义取决于使用的单词),或者最多搜索带有前缀的单词
按照设计匹配单词;它找不到“a”,因为数据中没有“a”字
如果要在单词中查找子字符串,必须使用LIKE。您使用%作为笑话。在FTS请求中,必须使用*代替
类似于“%word%”
匹配“*word*”
我注意到,对于非常短的单词(少于3个字母),LIKE比MATCH快。对于较长的单词,匹配速度更快。表格创建代码?(安卓系统是否支持fts4?还是只支持fts3?@njzk2补充道,安卓系统中的fts4我不知道,我会搜索是否只支持fts4或fts3)匹配和喜欢的工作方式不同。“a”和“WordA”都不在您显示的示例数据中。@CL。我知道,问题是匹配没有返回结果,它只返回0,但如果我使用LIKE进行相同的搜索,它返回结果=/,WordA只是我将来想做的事情的一个示例,您想找到哪一个示例行?当然有一个单词a,我不明白,我的数据库里有很多单词,在你展示的示例数据中没有单词“a”。正如我所提到的,标记器可能对“单词”有不同的定义。如果我添加了一行,其中只有一个“a”作为值,而没有匹配项,该如何解释?还是FTS的“不同概念”吗?