1

名前とメールアドレスを保存するためにsqlite3を使用するnotmuch-abookで遊んでいます。sqlite テーブルは全文検索を使用し、以下によって作成されます。

CREATE VIRTUAL TABLE AddressBook USING fts4(Name, Address);

「Hamish」、「Hamish D」、「Hamish Downer」という名前のエントリがあります。クエリ

select * from addressbook where addressbook match 'hamish';

それらをすべて見つけます。でも

select * from addressbook where addressbook match 'hamish d';

「Hamish D」という正確な名前のエントリのみが検索されますが、 「Hamish Downer」という名前のエントリは検索されません。私が期待するものを得ることができます:

select * from addressbook where name like 'hamish d%';

しかし、両方の列で一致するように一致バージョンを使用したいと思います。ここで何が起こっているのか分かりますか?または、私が望むようにマッチを動作させるにはどうすればよいですか?

4

1 に答える 1

5

ドキュメントを読んでください。

クエリ

... addressbook match 'hamish d'

との 2 つの単語を含むレコードを検索しhamishますdhamish dおそらく代わりにフレーズを検索したいでしょう。

... addressbook match '"hamish d"'

プレフィックスを検索するには、次を使用します*

... addressbook match '"hamish d*"'
于 2013-04-22T08:41:22.577 に答える