2012-04-03 30 views
2

我一直在使用sqlite的FTS擴展,似乎無法弄清楚如何做一個短語搜索一列,而匹配其他一些其他文本。通常做一個短語搜索適用於像所有列:FTS sqlite短語搜索單列不可能

SELECT * from ftstable where ftstable MATCH '"Phrase With Spaces In It"'; 

,以及用於與特定列:

SELECT * from ftstable where body MATCH '"Phrase With Spaces In It"'; 

,但不會對彙總的搜索在兩列樣工作:

​​

,而是拋出:

Error: malformed MATCH expression: [body:"Phrase With Spaces In It" title:"The*"] 

我發現這個帖子聲稱這是不可能的(2011年11月):http://osdir.com/ml/sqlite-users/2011-11/msg00363.html。有誰知道現在這是否可能?

我只能想象一個使用'INTERSECT'的解決方法,但問題是然後產生的兩個相交的集合太大,查詢會慢得多,而且內存效率低下,尤其是因爲我將它部署在移動設備上。

謝謝。

回答

3

你試過:

SELECT * FROM ftstable WHERE (ftstable MATCH 'body:"phrase with spaces in it"') AND (ftstable MATCH 'title:The*') 
+0

也許應該有或者而不是和... – 2012-08-29 07:45:57

+0

不,並且是正確的,他說他想爲兩者找到匹配。 – 2012-08-30 14:10:54

1

與列說明不能包含空格的過濾器。它只是不起作用。這很奇怪,但真實。 col1:abc工作,col1:「abc」不。 col1:「abc 123」不(它只是匹配任何具有「abc 123」int的列)。