使用带全文搜索的同义词库不起作用,可能我正在加载美国英语而不是英国英语

时间:2013-12-18 19:51:16

标签: sql-server full-text-search thesaurus

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

我有一个数据库,其中包含一个全文索引的表。

我使用1033根据the MSDN article here

加载了“英语”

加载需要很长时间(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'的记录,但结果并没有使用词库向我展示替代方案。

2 个答案:

答案 0 :(得分:1)

尝试

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

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

如果你正在寻找两个单词就像是

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

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

的操作
WHERE CONTAINS(NAME, 'FORMSOF (THESAURUS, Jon) OR "Smith"')

答案 1 :(得分:0)

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

Contains and Free Text Information

我也查看了图表,英国英语LCID是2057年。