如何创建“任何单词”搜索?

时间:2011-02-08 20:45:10

标签: sql search full-text-search

我们要做的是为“任意字”类型的匹配创建文本搜索。该表的设置如下:

ID | Keyword
-------------
1  | alpha, beta, charlie
2  | bravo, delta, echo
3  | alpha, delta, foxtrot

到目前为止我们尝试过的查询是这样的:

SELECT keyword FROM KeywordTest
       WHERE keyword 
 IN (select Value FRom split('alpha, beta, charlie',','))

我们认为会发生的是我们会得到两个结果,一个用于ID 1,另一个用于ID 3.但这不是我们只获得ID 1的情况。

我做错了什么,我怎么能调整这个查询以带回一个作为参数传入的'Any Words'的匹配。

谢谢!

2 个答案:

答案 0 :(得分:3)

问题出在哪里,因为关键字在IN中没有选择,关键字是LIKE选择。您可以尝试使用INNER JOIN:

SELECT  keyword 
FROM    KeywordTest a inner join
        split('alpha, beta, charlie',',') b on a.keyword like '%'+Value+'%'

答案 1 :(得分:1)

我实际上只是解决了一个非常类似的问题。

我相信你想要研究的是SQL的LIKE关键字。

SELECT keyword FROM KeywordTest
       WHERE keyword LIKE %'alpha'%

注意,您可能需要通过分隔符进行某种拆分,以将搜索结果全部放入LIKE查询中。 (如果你需要,我也可以提供帮助)

另外,请记住,%是外卡。在搜索条件之前和之后放置%,将在任何上下文中找到该字符串。

如果我们把WHERE Keyword LIKE'alpha'%,我们只会找到以alpha开头的结果。