[英]Android Sqlite FTS NOT Operation
我正在嘗試訂購快速文本搜索,以便完全匹配是第一個,部分匹配是最后一個。
我創建了一個在SQLiteStudio中工作的查詢:
SELECT value, 1 AS _order FROM glossfts
WHERE glossfts.value MATCH 'dog'
UNION
SELECT value, 2 AS _order FROM glossfts
WHERE glossfts.value MATCH 'dog* NOT dog'
ORDER BY _order
結果就是這樣
Beware of dog 1
Disliked by everybody, not even a dog will eat 1
Bad dog 1
Creed, dogma 2
Dogs 2
Dogwood 2
這很好用但是當我在android中使用相同的查詢時我才會得到
Beware of dog 1
Disliked by everybody, not even a dog will eat 1
Bad dog 1
Disliked by everybody, not even a dog will eat 2
因為它似乎在解釋:
MATCH 'dog* NOT dog'
如
MATCH 'dog* not dog'
這是怎么回事?
Android FTS使用標准查詢語法,未增強。
因此,它不會將“NOT”或“AND”識別為運算符。 它實際上是嘗試將它們與db列的文本相匹配。 這就是為什么在Android上,你唯一的匹配來自實際文本中帶有“not”的條目。
您必須使用“ - ”表示NOT,使用空格表示AND。 因此,您的語法應如下所示:
在哪里,有光澤的,有價值的,狗的,狗的,狗的
顯然,該Android設備上的SQLite已使用不同的FTS查詢語法進行編譯。
檢查PRAGMA compile_options;
的輸出PRAGMA compile_options;
對於ENABLE_FTS3_PARENTHESIS
,並相應地調整您的查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.