文本关键字搜索数据库中的200个左右的char文本字段

时间:2010-08-14 06:42:28

标签: sql oracle search text indexing

以下是这种情况,非常感谢任何人提出的任何意见:

我有一个大约100米行的表,其中包括(在其他几个字段中),我们称之为“产品”的文本字段。产品领域大约有200个字符,包含产品的详细信息。

我想让用户通过输入搜索字符串来搜索这些项目。在最简单的情况下,这可能就足够了,就好像我在我的sql中执行“和'%searchString%'这样的产品”。

好消息是,尽管有100米的行,但任何给定的用户只对自己的行感兴趣,其中的行数要少得多,最大的用户可能在表中有2米的行。

他们的查询还有其他部分,例如“价格> 100和'%searchString%'等产品。”

做'喜欢'是我最好的选择,或者在Oracle(我正在使用的数据库)或者某些外部索引工具中是否有一些好的工具。我见过提到Oracle Text,但对此并不了解。

问题比仅仅对产品名称中出现的所有关键字进行简单索引要困难一些,因为它们也可能会搜索SKU的一部分。所以产品名称可能包括SKU DFR45G6TY,他们只想放入'DFR'来取出它而不必输入完整的SKU字符串。 (如果我不得不错过这个功能,它可能仍然没问题。)

有人能指出我应该如何解决这个问题吗?资源,提示,想法,产品,任何感激的收获!

全部谢谢!

2 个答案:

答案 0 :(得分:1)

我不打算对Oracle Text进行折扣 - 阅读各种配置选项,SUBSTRING_INDEX看起来很有前途 - this page应该证明是有用的。

答案 1 :(得分:1)

Oracle Text确实感觉是正确的方法,尽管在一个表中只有200个字节可能有点过分。

如果他们最有可能进入产品名称的左侧,那么在该字段上编入索引的平原应该没问题。它仍然会带回所有DFR%产品,可能有数万个,但你无法控制它(除非警告用户,如果他们进入'短'搜索可能需要一些时间)。

如果SKU不在产品字符串的开头,那么您可以在SKU而不是整个产品上创建索引。

SUBSTR(product_name,<offset to start of SKU string>

另一方面,如果您需要处理一系列任意搜索,您将不得不将产品名称字符串的所有组件简化为另一个表或使用Oracle Text。