2013-12-18 33 views
0

我創建了一個同義詞庫文件並按照示例加載它。在全文搜索中使用同義詞庫不起作用,可能我正在加載美國英語而不是英國英語

我有一個全文索引表的數據庫。

我裝它根據the MSDN article here

花了很長的時間來加載(4分鐘),這是非常巨大的使用1033爲「英語」,所以我知道它加載它。

還有一個英國英語文件,這可能是我的SQL正在使用,這將解釋爲什麼它不起作用。但是該號碼未列在該圖表中,因此我不知道如何加載它。

假設是問題所有,都是花花公子。然而,我也找不到任何暗示詞庫會自動工作在任何自由文本查詢上的任何內容,例如。 CONTAINS,所以我不知道我是否必須對自由文本目錄做些什麼(看不到任何東西,但你永遠不知道)。

任何想法?

其他信息:

在我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) 

沒有關於 '喬恩' 和 '約翰' 的記錄,但結果是不使用詞庫來顯示我的選擇。

+0

你重新啓動服務???直到你從'Sql Server Config Manager'重新啓動服務纔會生效。 –

+0

我沒有,我沒有看到它說你必須這樣做的地方。這是我需要避免的,因爲我想將其放到我的生產服務器上,並且無需幾周通知客戶和頭痛就無法重啓。 – NibblyPig

+0

我已經重新啓動我的開發機器,但沒有改變。 – NibblyPig

回答

1

使用THESAURUS可以是一個有點棘手,有時嘗試

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

,我還沒有很長一段恬使用FTS e但我記得有時候,如果它包含在數據中,它將只返回THESAURUS值而不是實際值。例如,如果你正在尋找'Jon'的詞庫值,如果'Jon'是數據,它將不會返回'Jon',但會返回Jon的所有詞庫,很奇怪,但這是它的工作原理。

,如果你正在尋找的兩個詞是一樣的東西

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

要搜索約翰·史密斯,我認爲你可以這樣做

WHERE CONTAINS(NAME, 'FORMSOF (THESAURUS, Jon) OR "Smith"') 
+0

太好了,非常感謝! – NibblyPig

0

確保指定使用時,使用可選語言參數要使用的語言包含或FreeText的

Contains and Free Text Information

我也看了一下圖表和英式英語LCID是2057

+0

我運行了這個查詢,並且我認爲*我的設置爲US,'exec sp_configure'默認語言' SELECT @@ language,@@ langid'但是很難當然,因爲我正在努力尋找好的文檔。我正在做一個簡單的CONTAINS,所以我希望它能起作用,但它不會在詞庫中找到替代品。 – NibblyPig

+0

你嘗試過CONTAINS(*,'searchTerm',1033)嗎? – jazakari

+0

嗯,這是無效的語法。我嘗試從MyTable中選擇*,其中包含(MyColumn,'Test',LANGUAGE 1033)',但它沒有使用同義詞庫。 – NibblyPig

相關問題