问题标签 [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 投票
1 回答
133 浏览

oracle - 我可以将 OQL 与 Oracle 文本索引一起使用吗?

我有一个带有 Oracle Text 索引的数据库,我想使用带有对象查询语言 (OQL) 的访问层。
我想使用语句作为

在我的 OQL 访问层中。

这是可能的还是 OQL 标准不支持它?

0 投票
4 回答
11942 浏览

sql - Oracle:带条件的全文搜索

我创建了一个 Oracle Text 索引,如下所示:

然后我可以执行以下操作:

但是假设我们在这个表中有另一列,比如group_id,我想改为执行以下查询:

使用上述索引,Oracle 将不得不搜索所有包含 的项目,'blah'然后检查它们的所有group_ids。

理想情况下,我宁愿只搜索带有 的项目group_id = 43,所以我想要一个这样的索引:

有点像普通索引,因此可以为每个group_id.

有没有办法在 Oracle 中做这样的事情(如果这很重要,我正在使用 10g)?

编辑(澄清)

考虑一个有 100 万行和以下两列的表,A以及B,都是数字。假设有 500 个不同的值A和 2000 个不同的值B,并且每一行都是唯一的。

现在让我们考虑select ... where A = x and B = y

据我所知,一个单独的索引在 上A进行索引搜索,这将返回 500 个不同的行,然后对这些行进行连接/扫描。在任何情况下,至少要查看 500 行(除了数据库很幸运并尽早找到所需的行。BB

虽然索引(A,B)更有效,但它会在一次索引搜索中找到一行。

放置单独的索引group_id和我认为的文本只会给查询生成器留下两个选项。

(1) 使用group_id索引,并扫描所有结果行中的文本。
(2) 使用文本索引,并扫描所有结果行以查找group_id.
(3) 使用两个索引,并进行连接。

而我想要:

(4) 使用(group_id, "text")索引查找特定下的文本索引,group_id并扫描该文本索引以查找我需要的特定行/行。不需要扫描和检查或加入,就像在(A,B).

0 投票
1 回答
793 浏览

sql - 查询数据库名称的建议

我有一个 Oracle 数据库,与许多数据库一样,它有一个包含传记信息的表。对此,我想以“自然”的方式按名称搜索。

该表有forenamesurname字段,目前,我正在使用这样的东西:

这行得通,但它可能会很慢,因为该表上的索引显然不能解释前面的通配符。此外,用户通常会根据他们通过电话告诉他们的内容来搜索人——包括大量的非英文名字——所以最好也做一些语音分析。

因此,我一直在试验 Oracle Text:

这具有使用 Soundex 算法以及全文索引的优点,因此它应该更有效一些。(虽然,我的轶事结果表明它非常缓慢!)对此我唯一的担忧是:

  • 首先,需要以某种有意义的方式刷新文本索引。使用on commit速度太慢,并且可能会干扰前端软件(我无法控制)与数据库的交互方式;所以需要一些思考...

  • Oracle 返回的结果并不是很自然地排序的。我不太确定这个score功能。例如,我的开发数据显示“Jonathan Peter Jason Smith”在顶部——很好——但“Jane Margaret Simpson”与“John Terrance Smith”处于同一水平

我认为删除前面的通配符可能会在不降低结果的情况下提高性能,因为在现实生活中,您永远不会在名称中间搜索块。但是,否则,我对想法持开放态度……这种情况一定是实施得令人作呕!任何人都可以对我现在正在做/考虑的事情提出更好的方法吗?

谢谢 :)

0 投票
3 回答
4010 浏览

jpa - JPA 中的 Oracle 文本条件查询

是否可以使用 Oracle Text 的 contains 语句执行 JPA 标准查询,如果可以,如何?

0 投票
1 回答
733 浏览

oracle - 基于 Oracle Text 多列索引的查询不返回任何行

我有一个MAH_KERESES_MV有 3 列OBJEKTUM_NEV的表KERESES_SZOVEG_1,,,KERESES_SZOVEG_2。我创建以下多列 Oracle 文本索引:

但是查询不返回任何行,尽管如果我用like运算符制定查询,那么我会得到预期的结果:

有人可以帮忙吗?TIA,

塔马斯

0 投票
1 回答
515 浏览

oracle - 使用 .Net 和 Devart 的 dotConnect for Oracle 进行 Oracle 文本搜索

我们有一个需要使用关键字搜索所有表的 Web 应用程序。除了使用 Linq 查询之外,我在 Google 上没有找到太多东西。

我们需要由 Oracle 而不是 Web 应用程序执行搜索。

有没有人找到使用这种方法的解决方案?我们拥有的 Oracle 数据库的视图要求我们使用 dotConnect for Oracle。

0 投票
1 回答
33722 浏览

sql - Oracle DBMS_LOB.INSTR 和 CONTAINS 性能

dbms_lob.instr 和 contains 之间是否有任何性能差异,或者我做错了什么?

这是我的代码

最后两行更改为使用 instr

我的问题是我想使用 instr 而不是 contains,但在我看来,instr 比包含要慢得多。

0 投票
1 回答
7328 浏览

sql - CONTAINS 不适用于 Oracle 文本

我在执行此查询时遇到问题。

它给了我

经过一番谷歌搜索后,我发现问题可能出在索引中,但是当我查看表格和索引时,它们对我来说似乎没问题。

为索引创建脚本看起来像这样

唯一对我来说奇怪的是,当我在 SQL Developer 的表属性中查看编辑表时,我可以看到索引的操作状态为失败。有谁知道这是什么意思?也许是数据库权利?

当我使用它时它也在工作

代替contains

感谢您的任何建议

PS这与我之前的问题有关Oracle DBMS_LOB.INSTR and CONTAINS performance

更新

在重新创建索引和一些玩弄之后,我发现我可以执行上面的查询,但它不会返回任何东西。

如果我尝试使用CONTAINS(gob_a_document, '%'),结果是 26 行,并且不知道查询通过哪个键选择了它们(至少我没有发现任何明显的东西,我会进一步调查)。问题可能在于我们正在使用 Oracle 10g 并存储版本 11 支持的 DOCX 文件。

0 投票
1 回答
445 浏览

oracle - 使用 OracleText 在文档文本中搜索“AND”、“OR”、“NOT”

OracleText 对这些词具有特殊含义。如果文本本身有它们怎么办?

例如,d1.txt 有“猫和狗”,d2.txt 有“猫”。搜索短语“猫和狗”时,我应该只得到 d1.txt。

0 投票
1 回答
1882 浏览

oracle - Oracle 11g 文本:复合域索引 - 对来自不同表的列进行过滤

我正在使用 Oracle 11g 文本,

AuthorTable :(作者详细信息的表)AuthorId、AuthorName、AuthorDOB

ArticleTable : (文章内容表) ArticleId, WrittenDate, PublishDate, ARTICLE_TXT (CLOB)

LocationTable:(位置表)LocationId,LocationState,LocationCity

ArticleAuthorAssocTable : (文章-作者关联表) AuthorId, ArticleId

LocAuthorAssocTable:(作者位置关联表)AuthorId、LocationId、LocationStartDate、LocationEndDate

我的查询需要搜索 ARTICLE_TXT 上的任何输入搜索词以及 PublishDate / WrittenDate / AuthorDOB / LocationCity / LocationStartDate 范围上的任何其他查询。

由于我必须进行混合查询,因此我开始在 ArticleTable 上创建复合域索引 CDI。

和查询为

现在我的问题是:

  1. 是否可以在不同表的列上使用 FILTER BY 创建复合域索引?
  2. 有没有其他方法可以改进上述查询?

根据我的研究,一些选项正在使用物化视图、基于函数的索引、USER_DATASTORE

但不幸的是,仍然不知道如何使用它们......请用你的知识帮助我。

谢谢