揭示DB2 Content Manager文本搜索功能
【IT168 技术文档】对于由多个可进行文本搜索的部分组合成的项目,使用 DB2® Content Manager 仅搜索其中指定的一个部分可以提高搜索的精确度和性能。本文将展示如何在不使用启发式方法的情况下解决搜索问题,并让您清楚了解使用 DB2® Content Manager 中的文本搜索功能可以执行什么操作。
简介
许多 DB2® Content Manager Version 8 应用程序都将同一项中的可进行文本搜索的部分存放在 DB2® Content Manager 系统中。您需要能够只搜索属于某个应用程序的可搜索部分,并从搜索中排除其他可搜索部分。典型的启发式方法通过添加其本身的可搜索部分补充了 DB2® Content Manager 系统中的信息,然后搜索这些部分查找您查询的答案。多个应用程序方案中典型启发式方法涉及的问题是:搜索了所有可搜索部分,而不是只搜索属于某个特定应用程序的部分。本文将介绍如何对您感兴趣的可搜索部分进行搜索。搜索您感兴趣的可搜索部分不需要启发式方法。
文本搜索解决方案
在 DB2® Content Manager 中,存在一个名为 ICMPARTS 的视图,它包含属于某个项的每个部分的库信息。此视图包括属性 RESOURCENUM 和 TIEREF。RESOURCENUM 包含属于某个项的部分编号 (part number)。TIEREF 是可文本搜索部分的一个引用。这两个属性是查找和搜索属于您的应用程序的特定可文本搜索部分的关键。下面显示了几个查询字符串示例,演示了如何在文本搜索中使用这些属性。
假设其中一个应用程序对于 ItemType Example 放置了可文本搜索部分编号 11,并且您想在此部分中搜索短语 "Stochastic Processes"。在基本搜索中,您将按如下方式输入字符串:
/Example[contains-text-basic(.//ICMPARTS[@RESOURCENUM=11]/@TIEREF, " +'Stochastic Processes' ")=1]
上例中短语 "Stochastic Processes" 前的 + 号是指您正在搜索此短语。
如果您使用 contains-text,这等同于使用 contains-text-db2。下面提供了对于 contains-text-db2 和 contains-text-oracle 等效的高级搜索字符串。
/Example[contains-text-db2(.//ICMPARTS[@RESOURCENUM=11]/@TIEREF, " 'Stochastic Processes' ")=1]
/Example[contains-text-oracle(.//ICMPARTS[@RESOURCENUM=11]/@TIEREF, " 'Stochastic Processes' ")>0]
对于另一个示例,假设您正在 ItemType Example 中搜索编号为 11 的可搜索部分来查找短语 "Stochastic Processes" 的未出现(nonoccurrence)情况。在基本搜索中,您将按如下方式输入搜索字符串:
/Example[contains-text-basic(.//ICMPARTS[@RESOURCENUM=11]/@TIEREF, " -'Stochastic Processes' ")=1]
上例中短语 "Stochastic Processes" 之前的 - 号意思是指您要搜索此短语。
下面是对于 contains-text-db2 和 contains-text-oracle 等效的搜索字符串:
/Example[contains-text-db2(.//ICMPARTS[@RESOURCENUM=11]/@TIEREF, " NOT 'Stochastic Processes' ")=1]
/Example[contains-text-oracle(.//ICMPARTS[@RESOURCENUM=11]/@TIEREF, " NOT 'Stochastic Processes' ")>0]
在本示例中,其中一个应用程序将可文本搜索部分 11、21 和 25 放入 ItemType Example 中。您只想搜索这些可进行文本搜索的部分中的短语 "Infinity and beyond"。下面是使用 contains-text-db2 的高级搜索字符串:
/Example[contains-text-db2(.//ICMPARTS[@RESOURCENUM IN (11,21,25)]/@TIEREF, " 'Infinity and beyond' ")=1]
在高级搜索中,可以使用 & (AND) 和 | (OR) 运算符。也可以执行模糊搜索和使用布尔逻辑。基本搜索允许您使用 + 和 -,但不能使用布尔运算符或更复杂的表达式。
DB2® Content Manager 附带了示例程序。SSearchICM.java 是一个 Java® 程序,指导您如何使用搜索。您可以使用此程序测试上面提供的搜索字符串,可以验证您看到了期望的结果。可以将 Example ItemType 替换为您已经拥有的某些其他 ItemType,并使用不同的部分编号和短语,以了解此解决方案可让您处理所有可搜索部分的子集。
结束语
上述示例展示了如何搜索所有可进行文本搜索的部分的子集。这可以让您处理不同应用程序,这些程序将可搜索部分放入 ItemType 中的相同项中。通过使用所有可搜索部分的子集,可以从搜索中获得所需的结果,并向用户提供所需的结果,而不必采用启发式方法。