2016-09-26 4 views
1

私は仮想テーブルの複数の列に複数のテキストを探しています。私はthisスレッドをチェックしました。この検索は、複数の列で1つの単語を検索します。テーブル内の複数のテキストをSQLite FTS3とどのようにマッチさせますか?

私は

SELECT * FROM table WHERE table MATCH (('A:cat OR C:cat') AND ('A:dog OR C:dog') 

以下でチェックが、それはそうです、条件が動作していません。私は次のように試してみました

EDIT

Select count (*) FROM Table1 WHERE TBL_VIRTUAL MATCH (('A:D* AND B:D* AND C:D*') OR ('A:tar* AND B:tar* AND C:tar*')); 
Select count (*) FROM Table1 WHERE TBL_VIRTUAL MATCH (('A:D* AND B:D* AND C:D*') AND ('A:tar* AND B:tar* AND C:tar*')); 

は、これらの両方のクエリは私に同じ結果を返します。

SELECT * FROM table WHERE table MATCH '(A:D* OR B:D* OR C: D*) AND (A:tar* OR B:tar* OR C:tar*)' 
SELECT * FROM table WHERE table MATCH '(A:D* OR B:D* OR C: D*) OR (A:tar* OR B:tar* OR C:tar*)' 

しかし、この戻り結果:その後、私は答えの下で言及@redneb何をしようとしました。

私はここで何が欠けているのか何か提案!

SELECT * 
FROM mytable 
WHERE mytable MATCH '(A:cat OR C:cat) AND (A:dog OR C:dog)'; 

はしかし、私は次のクエリが速く実行されますことを疑う:

SELECT * 
FROM mytable 
WHERE mytable MATCH '(A:cat AND C:dog) OR (A:dog AND C:cat)'; 

をし、最初の1に相当し

答えて

2

代わりにこれを試してみてください。

:完全な例です。のは、最初のテーブルを作成して移入してみましょう:

CREATE VIRTUAL TABLE mytable USING fts3(A, C); 
INSERT INTO mytable VALUES 
    ('foo','bar'), 
    ('dog','dog'), 
    ('cat','cat'), 
    ('dog','cat'), 
    ('cat','dog'); 

は、その後クエリが期待どおりに動作:

sqlite> SELECT * FROM mytable WHERE mytable MATCH '(A:cat AND C:dog) OR (A:dog AND C:cat)'; 
A   C   
---------- ---------- 
dog   cat  
cat   dog  
+0

おかげで、私はあなたが提案した状態で、私の質問を編集しました。しかし、それは期待される結果を生み出していない。チェックしてください。 – CoDe

関連する問題