0

我创建了一个词库文件并按照示例加载它。

我有一个带有全文索引表的数据库。

根据此处的 MSDN 文章,我使用 1033 加载它,即“英语”

加载时间很长(4 分钟),它非常大,所以我知道它加载了它。

还有一个英式英语文件,这可能是我的 SQL 正在使用的文件,可以解释为什么它不起作用。但是该数字未在该图表上列出,因此我不知道如何加载它。

假设这是问题所在,一切都是花花公子。但是,我也找不到任何表明词库将简单地自动处理任何自由文本查询的内容,例如。包含所以我不知道我是否必须对我的自由文本目录做些什么(看不到任何东西,但你永远不知道)。

有任何想法吗?

附加信息:

在我的tsenu.xml文件中:

<XML ID="Microsoft Search Thesaurus">

    <thesaurus xmlns="x-schema:tsSchema.xml">
    <diacritics_sensitive>0</diacritics_sensitive>
        <expansion>
            <sub>John</sub>
            <sub>Jon</sub>
        </expansion>
    </thesaurus>

</XML>

然后我运行了这个:

EXEC sys.sp_fulltext_load_thesaurus_file 1033;
select * from Cats where contains(CatName , 'Jon', language 1033)

有 'Jon' 和 'John' 的记录,但结果没有使用同义词库向我展示替代方案。

4

2 回答 2

2

尝试

WHERE CONTAINS(CatName , 'FORMSOF (THESAURUS, Jon)')

有时使用 THESAURUS 可能有点棘手,我很长时间没有使用 FTS,但我记得有时,如果它包含在数据中,它只会返回 THESAURUS 值而不是实际值。例如,如果您正在寻找“Jon”的词库值,如果有“Jon”是数据,它将不会返回“Jon”,但会返回 Jon 的所有词库,这很奇怪,但这就是它的工作原理。

如果你正在寻找两个词是这样的

WHERE CONTAINS(CatName , '"Word1" AND "Word2"')

要搜索 John Smith,我认为您可以执行类似的操作

WHERE CONTAINS(NAME, 'FORMSOF (THESAURUS, Jon) OR "Smith"')
于 2013-12-18T21:10:43.243 回答
0

确保在使用 Contains 或 FreeText 时使用可选语言参数指定要使用的语言

包含和自由文本信息

我还看了图表,英式英语 LCID 是 2057。

于 2013-12-18T20:07:46.560 回答