gpt4 book ai didi

带空格的 Oracle 模糊搜索

转载 作者:行者123 更新时间:2023-12-04 08:09:41 24 4
gpt4 key购买 nike

我想在 Oracle 中进行模糊搜索,但查询不适用于空格。
前任。假设我们有一个表 po_test_tmp 有很多记录
如果我们执行这个查询它工作正常

select score(1), ae.po_number
from po_test_tmp ae
where CONTAINS(po_number, 'fuzzy(po, 50,5000, weight)', 1)> 0
order by score(1) desc;
但是如果我们尝试搜索像 PO 123 这样的词,它就不起作用
select score(1), ae.po_number
from po_test_tmp ae
where CONTAINS(po_number, 'fuzzy(PO 123, 50,5000, weight)', 1)> 0
order by score(1) desc;
ORA-29902: error in executing ODCIIndexStart() routine
ORA-20000: Oracle Text error:
DRG-50901: text query parser syntax error on line 1, column 10
29902. 00000 - "error in executing ODCIIndexStart() routine"
*Cause: The execution of ODCIIndexStart routine caused an error.
*Action: Examine the error messages produced by the indextype code and
take appropriate action.
如果搜索词有空格,如何进行模糊搜索,搜索词可以有特殊字符和多个空格。

最佳答案

首先请查看 Fuzzy 的文档运算符(operator)

Parameter term - Specify the word on which to perform the fuzzy expansion.


请注意,一个术语通常不包含空白,您必须将搜索拆分为 Searate 术语。
另外请注意 fuzzy要激活,该术语必须至少有 3 个字符。所以你的例子 PO不管用。
您可以为您的设置做的是定义一个额外的 fuzzy搜索模糊字符串的每个部分并将它们与 near operator 组合起来如下
 contains(po_number,'near (( fuzzy(word1,,,weight),fuzzy(word2,,,weight) ), 2, TRUE)',1) > 0
near此处强制两个匹配项必须相邻( span = 2)且有序( TRUE )。
特殊字符的处理取决于您的 whitespace 的定义和 printjoins在您的偏好中。

关于带空格的 Oracle 模糊搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66042362/

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