2010-11-11 44 views
5

有沒有什麼辦法,使其返回中存在的莖/輸入字的語調,而不僅僅是那些推導來直接訪問一個CONTAINS全文搜索查詢的FORMSOF()選項一起使用的詞幹搜索欄。使用SQL Server FTS施特默爾

例如,查詢

SELECT * FROM dbo.MyDB WHERE contains(CHAR_COL,'FORMSOF(INFLECTIONAL, prettier)') 

返回幹「漂亮」等詞形變化,例如「最漂亮」,如果在CHAR_COL列中存在它們。我想要的是直接調用FORMSOF()函數,而不需要引用任何列。任何機會?

編輯: 能夠滿足我的需求,查詢結束了

SELECT * FROM 
    (SELECT ROW_NUMBER() OVER (PARTITION BY group_ID ORDER BY GROUP_ID) ord, display_term 
    from sys.dm_fts_parser('FORMSOF(FREETEXT, running) and FORMSOF(FREETEXT, jumping)', 1033, null, 1)) a 
WHERE ord=1 

要求具有sysadmin 固定服務器角色和訪問權限 指定的非索引字表的成員。

回答

3

不,你不能這樣做。您無法直接訪問stemmer。

通過查看Solr源代碼,您可以瞭解它是如何工作的。但它可能(我想會)與MS SQL FT中實現的不同。

更新:事實證明,在SQL Server 2008 R2中,你可以做一些非常接近你想要的東西。一個特殊的表值UDF加入:

sys.dm_fts_parser('query_string', lcid, stoplist_id, accent_sensitivity) 

它可以讓你得到一個符號化的結果(即應用斷字,辭典和停止列表應用後的結果)。所以如果你給它提供'FORMSOF(....)',它會給你你想要的結果(好吧,你將不得不處理結果集)。這裏是相應的article in MSDN

+0

正是我所期待的。 – Laramie 2010-11-12 04:43:24