2010-11-11 8 views
5

¿Hay alguna forma de acceder directamente al stemmer utilizado en la FORMSOF() opción de una consulta de búsqueda de texto completo CONTAINS para que devuelva los tallos/inflexiones de una palabra de entrada, no solo las derivaciones que existen en un columna de búsqueda.Usar SQL Server FTS Stemmer

Por ejemplo, la consulta

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

devuelve la raíz "bastante" y otras inflexiones tales como "más bonita" si existe en la columna de la char_col. Lo que quiero es llamar directamente a la función FORMSOF() sin hacer referencia a ninguna columna. ¿Cualquier oportunidad?

EDIT: La consulta que se reunió mis necesidades terminó siendo

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 

Debe pertenecer al administrador del sistema fija de servidor de rol y derechos de acceso a la lista de palabras irrelevantes especificado.

Respuesta

3

No. No puede hacer esto. No se puede acceder directamente al tallo.

Puede hacerse una idea de cómo funciona si observa el código fuente Solr. Pero podría (y supongo que será) ser diferente de la implementada en MS SQL FT.

ACTUALIZACIÓN: Resulta que en SQL Server 2008 R2 puede hacer algo bastante parecido a lo que desea. Se añadió una UDF con valores de tabla especial:

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

que le permite obtener un resultado tokenización (es decir, el resultado después de aplicar la separación de palabras, sinónimos y detener la lista de aplicaciones). Entonces, en caso de que lo alimente 'FORMSOF (....)' le dará el resultado que desea (bueno, tendrá que procesar el conjunto de resultados de todos modos). Aquí está el correspondiente article in MSDN.

+0

Exactamente lo que estaba esperando. – Laramie

Cuestiones relacionadas