我正在玩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%';
但我想使用匹配版本来匹配两列。知道这里发生了什么吗?或者如何让匹配按我的意愿工作?
答案 0 :(得分:5)
查询
... addressbook match 'hamish d'
查找包含两个单词hamish
和d
的记录。您可能希望搜索短语hamish d
,您可以使用
... addressbook match '"hamish d"'
要搜索前缀,请使用*
:
... addressbook match '"hamish d*"'