0

我正在学习如何在 SQlite 中使用FTS4并尝试翻译如下内容:

SELECT * FROM table 
WHERE (postal_code LIKE q1 OR place_name LIKE q1) AND (address LIKE q2)

它与普通表完美配合,类似于:

SELECT * FROM table
WHERE table MATCH '(postal_code: q1 OR place_name: q1) AND (address: q2)'

这不适用于转换为 VIRTUAL .. USING fts4 的同一张表...

使用“ : ”在特定列中搜索匹配是有效的,但我如何将它与 OR 和 AND 结合使用?

背景 - 我尝试使用灵活的查询,其中 q1 可以是两者之一:邮政编码或地名,q2 必须是地址。

编辑:

这就是我到目前为止(部分)工作的结果

SELECT * FROM table WHERE table MATCH ('postal_code:q1 OR place_name:q1')
INTERSECT
SELECT * FROM table WHERE table MATCH ('address:q2');

(基于@CL的这篇文章)

这里的第一个问题是带空格的单词 - 如果我搜索类似

...MATCH ('postal_code:"new haven*" OR place_name:"new_haven*"')

然后我有“格式错误的 MATCH 表达式”第二个问题是当我有空查询时,比如

...MATCH ('*')

然后我什么也得不到

4

0 回答 0