Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用sqlite的FTS代码段函数处理html转义_Python_Sqlite_Full Text Search_Fts4 - Fatal编程技术网

Python 使用sqlite的FTS代码段函数处理html转义

Python 使用sqlite的FTS代码段函数处理html转义,python,sqlite,full-text-search,fts4,Python,Sqlite,Full Text Search,Fts4,我使用sqlite的全文搜索支持来存储可能包含&,字符的文档。我打算使用snippet函数突出显示html结果页面的匹配项,但在注入标记之前,我看不到明显的方法来转义文本。我不希望在存储文本之前对其进行转义,因为这样amp、lt和gt将成为标记 我能想到的最简单的解决方法是在存储页面之前转义页面,并使用一个自定义标记器,该标记器首先将unescape&;,和 然而。。。由于snippetfoo的默认设置是使用和,这似乎是一个非常常见的用例,我确信一定有一种方法可以处理这个问题,而不必在C中

我使用sqlite的全文搜索支持来存储可能包含&,字符的文档。我打算使用snippet函数突出显示html结果页面的匹配项,但在注入标记之前,我看不到明显的方法来转义文本。我不希望在存储文本之前对其进行转义,因为这样amp、lt和gt将成为标记

我能想到的最简单的解决方法是在存储页面之前转义页面,并使用一个自定义标记器,该标记器首先将unescape&;,和


然而。。。由于snippetfoo的默认设置是使用和,这似乎是一个非常常见的用例,我确信一定有一种方法可以处理这个问题,而不必在C中重新发明轮子。我是否忽略了一个更优雅的解决方案?

FTS似乎确实不处理文本中的标记请注意是如何被切碎的:

>使用fts3content文本创建虚拟表测试; >在测试值中插入“这不是很有趣吗?”; >在测试值中插入“废话”; >从内容匹配“有趣”的测试中选择snippettest; p> 这不是很有趣吗? >从内容与“字体”匹配的测试中选择snippettest; p> 这不是很有趣吗? 存储文本的最干净的方法是以纯文本的形式存储,不带任何scaped。 但是,要正确突出显示搜索结果,您有两种选择:

使用snippet的可选参数指定保证不会出现在文本中的标记(这可能是不可能的),并将这些标记转换为。。。当您为HTML转义文本时;或 改为使用偏移功能并手动插入标记。
FTS似乎确实不处理文本中的标记。请注意是如何被切碎的:

>使用fts3content文本创建虚拟表测试; >在测试值中插入“这不是很有趣吗?”; >在测试值中插入“废话”; >从内容匹配“有趣”的测试中选择snippettest; p> 这不是很有趣吗? >从内容与“字体”匹配的测试中选择snippettest; p> 这不是很有趣吗? 存储文本的最干净的方法是以纯文本的形式存储,不带任何scaped。 但是,要正确突出显示搜索结果,您有两种选择:

使用snippet的可选参数指定保证不会出现在文本中的标记(这可能是不可能的),并将这些标记转换为。。。当您为HTML转义文本时;或 改为使用偏移功能并手动插入标记。
谢谢我存储的文本是重新构造的文本,并且已经过验证,所以我只是使用了被docutils rst解析器拒绝的标记。不漂亮,但效果很好。谢谢!我存储的文本是重新构造的文本,并且已经过验证,所以我只是使用了被docutils rst解析器拒绝的标记。不漂亮,但效果很好。