问题标签 [oracle-text]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
673 浏览

oracle - 使用 CONTAINS 的 Oracle XML 全文查询,和 INPATH

<query>我正在努力寻找一种使用语法和 INPATH 表达式组合全文查询进程的方法。

给定下一个代码,Oracle 将忽略 INPATH 表达式。

0 投票
1 回答
183 浏览

oracle - Oracle Text: update while index is being synchronized

I have a complex context index that gets synchronized nightly. The process takes some 10 minutes, and any updates to this table that touch the index column during synchronization period result in ORA-29861: domain index is marked LOADING/FAILED/UNUSABLE exception - what can I do about it?

0 投票
1 回答
750 浏览

oracle - Oracle 文本花括号行为

我正在使用 oracle 文本在搜索栏中进行预读(根据规范作者)。

基本上,用户可以开始输入文本,我们用可能的匹配项填充建议栏。

我尝试为此使用 oracle 文本,但遇到了一些问题,最新的问题是:

表包含 answertext 的此条目: ... 我们提供许多定价选项 ...

此查询不返回任何内容。但是使用 {pricing} 将返回正确的结果。

并建议为什么会发生这种情况会很棒!

编辑:只是想补充一点,使用词干对我不起作用,因为用户想要区分“报告”和“报告”,并且他们希望突出显示匹配的子字符串,如果我可以在返回的子字符串中找到该子字符串,则可以这样做结果。

编辑 2:我有我的猜测,oracle 使用索引中某种单词边界对每个单词进行标记,因此没有任何通配符,它​​会查找等于 = 'pric' 的标记,因此找不到它(因为有代币“定价”)。所以,如果这个猜测是正确的,我希望有人能插话我如何使上面的查询与示例条目一起工作,同时仍然保持空白,所以如果输入“定价选项”它应该返回但如果我输入“许多选项”它不应该...

0 投票
1 回答
1966 浏览

oracle - 在 Oracle 中搜索具有逗号分隔值的列

我正在使用 Oracle 11g 和 Oracle Text 作为 Web 搜索引擎。

我现在已经创建了一个Keywords包含空格分隔的单词的 CLOB 列并对其进行了文本索引。这允许我扩展搜索,因为 Oracle Text 将返回在该列中存储了一个或多个关键字的行。该列的内容对用户隐藏,仅用于“扩展”搜索。这是按预期工作的。

但是现在我需要支持多个单词甚至完整的句子。在当前配置下,Oracle Text 将仅搜索单个关键字。我如何需要存储短语并配置 Oracle Text 以便它搜索整个短语(精确匹配是首选,但模糊匹配也可以)?

两行的列内容示例(分号分隔值):

我发现了一个类似的问题:Searching a column with comma separator values,但我需要一个具有自由文本搜索功能的 Oracle 11g 解决方案。

可能的解决方案:

第一个解决方案:我正在考虑重新设计数据库,如下所示。我会做一张新桌子Keywords(pkID NUMBER, nonUniqueID NUMBER, singlePhrase VARCHAR2(100 BYTE))。我会将上一列更改KeywordKeywordNonUniqueID,它将保存 ID(而不是值列表)。在搜索时,我会与新Keyword表进行 INNER JOIN。这个解决方案的问题是我会得到多行,其中包含除了短语之外的相同数据。我认为这会破坏排名?

第二种解决方案:是否可以将短语作为 XML 存储在原始Keyword列中,并以某种方式告诉 Oracle Text 在 XML 中搜索?

第三种解决方案:?

请注意,通常不会有很多短语(少于 100 个),也不会很长(单个短语最多有 5 个单词)。

另请注意,我目前正在使用CONTAINS及其一些运算符来满足我的全文搜索需求。

编辑:这个https://forums.oracle.com/forums/thread.jspa?messageID=10791361讨​​论几乎解决了我的问题,但它也匹配单个单词,而不是整个短语(精确匹配)。

0 投票
0 回答
899 浏览

oracle - 如何使用绑定变量修复“ORA-29909:辅助运算符的标签不是文字数字”?

以下 SQL 运行 Oracle Text CONTEXT 索引列:

结果是:

我在这里发现了一个类似问题的提及:

https://forums.oracle.com/forums/thread.jspa?threadID=91417

但在我的情况下,使用以下命令更改光标无济于事:

还有这个stackoverflow问题:

ORA-29908: 缺少辅助运算符的主要调用

但答案不适用。我正在使用 Oracle 11.2.0.3.0

0 投票
1 回答
327 浏览

oracle-text - 理解\修改Oracle Text IDF(逆文档频率)评分

Oracle Text 使用 IDF 评分的一种变体。没有记录确切的算法。

在场景中,分数似乎与我在手动计算 IDF 时得到的分数不同

我想了解 oracle 如何计算分数,并可能对其进行修改。

  • 有没有修改评分算法的方法?

  • 似乎表 DR$indexname$I 包含 TOKEN_COUNT 字段中的词频 - 我们这对吗?

  • DR$ 表的结构是否记录在案?

0 投票
1 回答
537 浏览

oracle - Oracle Text 查询重写模板不起作用

为什么 Oracle 文档中示例中的最后两个重写规则不起作用?

来源http://docs.oracle.com/cd/B28359_01/text.111/b28303/query.htm#i1007557

查询应用程序有时会解析最终用户查询,使用不同的运算符组合以一种或多种方式解释查询字符串。例如,如果用户输入查询 kukui nut,您的应用程序可能会输入查询 {kukui nut} 和 {kukui or nut} 以增加召回率。

查询重写功能使您能够提交将原始查询扩展为重写版本的单个查询。结果返回没有重复。

您可以使用查询模板功能指定重写序列。只需调用一次 CONTAINS 或 CATSEARCH 即可有效地执行重写后的查询版本。

以下模板定义了查询重写序列。{kukui nut}的查询改写如下:

{kukui} {坚果}

{kukui} ; {坚果}

{kukui} 和 {nut}

{kukui}累积{坚果}

这些转换的查询重写模板如下:

0 投票
1 回答
790 浏览

c# - 解析 Oracle Text 搜索/查询中的保留字符?

我正在设计一个网络应用程序,其中有一个搜索页面,可以进行全文搜索(我在我感兴趣的文本列上创建了一个 CONTEXT 索引)。使用Oracle,您可以执行 CONTAINS 查询来运行全文搜索并返回结果 - 这很好,除非您输入保留字符,例如:

“冰* AND 地方 AND 阿拉斯加”

您在“ice”之后放置“*”的事实会给您带来 Oracle 错误,即

避免这种情况的最优雅的方法是什么——我知道你可以过滤掉保留字符和关键字——但我原以为会有更优雅的方法。如果你知道这样的事情,我真的很想知道:-)


注意:这是运行 Oracle 文本搜索的代码,没什么特别的:

0 投票
2 回答
1514 浏览

oracle - 查找在我的 oracle.context 索引中编入索引的文档数?

我知道我可以ctx_query.count_hits用来计算与查询匹配的文档数,同样,我可以使用

但如果我真的有疑问,这些只是选项。如果我将空字符串作为查询传递(感谢 oracle ...),这些函数会引发异常。所以,

有没有办法计算我的 oracle.text 索引索引的文档总数?

0 投票
1 回答
3748 浏览

oracle - Oracle 上下文索引创建脚本

我需要为已经存在的索引生成完整的 Oracle CONTEXT 索引创建脚本。

我很确定,我曾经在 Oracle 文档中找到了如何做到这一点,但现在,我不能。我需要类似 DBMS_METADATA.get_ddl 的东西,但更详细。我的意思是当我创建一个索引时

Oracle 默认会做很多事情,比如配置数据存储、停止列表等。我想查看所有隐式调用的 CTX_DDL 过程。