簡體   English   中英

Android Sqlite FTS NOT操作

[英]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。 因此,您的語法應如下所示:

在哪里,有光澤的,有價值的,狗的,狗的,狗的

http://www.sqlite.org/fts3.html

顯然,該Android設備上的SQLite已使用不同的FTS查詢語法進行編譯。

檢查PRAGMA compile_options;的輸出PRAGMA compile_options; 對於ENABLE_FTS3_PARENTHESIS ,並相應地調整您的查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM