我一直在使用 sqlite 的 FTS 扩展,似乎无法弄清楚如何对一列进行短语搜索,同时为其他一些文本匹配其他文本。通常,执行短语搜索适用于所有列,例如:
SELECT * from ftstable where ftstable MATCH '"Phrase With Spaces In It"';
对于特定的列:
SELECT * from ftstable where body MATCH '"Phrase With Spaces In It"';
但不适用于两列中的聚合搜索,例如:
SELECT * from ftstable where ftstable MATCH 'body:"Phrase With Spaces In It" title:"The*"';
并抛出:
Error: malformed MATCH expression: [body:"Phrase With Spaces In It" title:"The*"]
我发现这个线程声称这是不可能的(2011 年 11 月):http://osdir.com/ml/sqlite-users/2011-11/msg00363.html http://osdir.com/ml/sqlite-users/2011-11/msg00363.html。有谁知道现在这是否可能?
我只能想象使用“相交”的解决方法,但问题是得到的相交的两个集合太大,查询会慢得多并且内存效率低下,特别是因为我将其部署在移动设备上。
Thanks.
你有没有尝试过:
SELECT * FROM ftstable WHERE (ftstable MATCH 'body:"phrase with spaces in it"') AND (ftstable MATCH 'title:The*')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)