带有全文搜索的sqlite在查询空间时找不到结果

时间:2013-04-21 22:53:51

标签: sqlite full-text-search

我正在玩notmuch-abook,它使用sqlite3来存储姓名和电子邮件地址。 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%';

但我想使用匹配版本来匹配两列。知道这里发生了什么吗?或者如何让匹配按我的意愿工作?

1 个答案:

答案 0 :(得分:5)

阅读documentation

查询

... addressbook match 'hamish d'

查找包含两个单词hamishd的记录。您可能希望搜索短语hamish d,您可以使用

进行搜索
... addressbook match '"hamish d"'

要搜索前缀,请使用*

... addressbook match '"hamish d*"'