我正在尝试将CONTAINSTABLE
与FORMSOF
一起使用并使用星号搜索前缀。这是可能的,如果是这样,那么正确的语法是什么?
我的(错误的)尝试是:
CONTAINSTABLE( abc.Table, ColumnName, 'FORMSOF( THESAURUS, "wine*" OR "vine*" )')
我需要更改什么才能使其有效?
答案 0 :(得分:0)
CONTAINSTABLE
没有将表名作为参数,它只会搜索列
应该是这样的:
CONTAINSTABLE(ColumnName, 'FORMSOF( THESAURUS, "wine*" OR "vine*" )')
答案 1 :(得分:0)
不可能一蹴而就。来自文档:
<simple_term> ::=
{ word | "phrase" }
<prefix term> ::=
{ "word*" | "phrase*" }
<generation_term> ::=
FORMSOF ( { INFLECTIONAL | THESAURUS } , <simple_term> [ ,...n ] )
如果将其合并为一个术语,可能会非常昂贵,因为您要求 DB 查找带有子字符串的所有单词,然后查找所有与这些单词相似的单词。在你上面的例子中,它必须对 wine* 和 vine* 都这样做。排名也可能很有趣。
一种解决方法是搜索两次,一次使用前缀,一次使用同义词库,然后使用您自己的排名方法组合结果。
答案 2 :(得分:0)
CONTAINSTABLE 可以以表名作为参数
CONTAINSTABLE
( table , { column_name | ( column_list ) | * } , ' <contains_search_condition> '
[ , LANGUAGE language_term]
[ , top_n_by_rank ]
)