gpt4 book ai didi

甲骨文文本 : How to sanitize user input

转载 作者:行者123 更新时间:2023-12-02 12:10:11 24 4
gpt4 key购买 nike

如果有人有使用 Oracle 文本 (CTXSYS.CONTEXT) 的经验,我想知道当用户想要搜索可能包含撇号的名称时如何处理用户输入。

在某些情况下,转义 ' 似乎有效,但对于单词末尾的 s 则不起作用 - s 位于停用词列表中,因此似乎已被删除。

我们目前将简单查询文本(即任何字母)更改为 %text%,例如:

contains(field, :text) > 0

搜索O'Neil有效,但搜索Joe's无效。

有人使用 Oracle Text 处理过这个问题吗?

最佳答案

用反斜杠转义所有特殊字符。大括号不适用于子字符串搜索,因为它们定义了完整的标记。例如 %{ello}% 不会匹配标记“Hello”

转义空格字符将包含在搜索标记中,因此搜索字符串“%stay\near\me%”将被视为文字字符串“stay close me”,并且不会调用“near”运算符。

如果您正在索引短字符串(如名称等),并且希望 Oracle Text 的行为与 like 运算符完全相同,则必须编写自己的词法分析器,该词法分析器不会为单个单词创建标记。 (不幸的是CATSEARCH不支持子字符串搜索...)

通过标记匹配更改搜索以使用 Oracle 文本的语义可能是一个好主意,但对于某些应用程序,多个(短)标记和数字标记的通配符扩展将为搜索字符串创建过多的命中用户合理地期望能够工作。

例如,如果索引数据中有大量数字标记,则搜索“%I\AM\NUMBER\9%”很可能会失败,因为所有标记都以“I”结尾并以“9”开头必须先进行搜索并合并,然后才能返回结果。

“I”和“AM”可能也在默认非索引字表中,并且将被完全忽略,因此对于这个假设的应用程序,如果这些标记很重要,则可以使用空非索引字表。

关于甲骨文文本 : How to sanitize user input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/219482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com