我需要对html内容进行全文搜索。我有一个解决方案,但在我决定之前,我想检查是否还有其他解决方案。
我将在非常简单的例子中描述。我有一些数据表:
CREATE VIRTUAL TABLE Post USING fts3(Title, Content);
INSERT INTO post VALUES("Title 1", "Some content");
INSERT INTO post VALUES("Title 2", "<b>S</b>ome <b>C</b>ontent");
我正在搜索包含&#34; Some&#34;内容列的字符串。我可以在一个查询中执行此操作吗?使用MATCH
SELECT * FROM post WHERE Content MATCH 'Some';
它会找到第一行。
我的解决方案是制作两张桌子。对于html内容,第一个表格将是正常的(不是全文搜索),对于具有全文搜索的纯文本内容,第一个表格将是正常的。第二个表将包含第一个但没有html标签的内容。
在sqlite中执行此操作非常重要。
答案 0 :(得分:1)
FTS模块使用tokenizers来检测文本中的单词。
没有内置的tokenizer忽略HTML标记;你必须写一个自定义标记器。 使用具有纯文本数据的表可能是更好的主意。