1

我正在尝试使用以下查询查询 Sqlite 数据库,其中考虑到 2 个字段,例如标题和作者:

SELECT * FROM books WHERE title MATCH 'Author:<author>* <title>*'

它在不包含空格(即单个单词)时起作用<author><title>但是当我尝试例如对于作者:“mark tw”时,它不会匹配任何行,因为有 2 个单词。

那么,是否可以对由多个单词组成的短语查询使用前缀?

4

2 回答 2

1

应针对整个表进行具有列规范的搜索,如果冒号后没有空格,则在这种情况下无法正确解析短语搜索:

... WHERE books MATCH 'Author: "mark tw*" title*'
于 2015-01-28T20:28:08.623 回答
1

不能工作。特定列上的匹配此时不能包含空格。match column1: "abc 123" 之类的内容只匹配其中包含 "abc 123" 的任何列,因为查询解析器没有将 "abc 123" 视为 column1 的参数,而是将其视为不同的过滤器(它认为它就像 column1:anything “ABC 123”)。对我来说似乎是一个疏忽。column1:"abc 123"(没有空格)不返回任何内容。column1:abc 123 确实返回 column1 与 abc 匹配且其他列之一包含 123 的行。

于 2015-08-21T10:48:05.243 回答