Pergunta

OK esta é a situação ..

Eu estou permitindo a pesquisa de texto completo em uma mesa, mas ele só funciona em alguns campos ..

CREATE FULLTEXT CATALOG [defaultcatalog]
CREATE UNIQUE INDEX ui_staticid on static(id)
CREATE FULLTEXT INDEX ON static(title_gr LANGUAGE 19,title_en,description_gr LANGUAGE 19,description_en) KEY INDEX staticid ON [defaultcatalog] WITH CHANGE_TRACKING AUTO

Agora, por que o seguinte irá trazer resultados

Select * from static where freetext(description_en, N'str')

e isso não (enquanto a ambos têm texto com str nele ..)

Select * from static where freetext(description_gr, N'str')

(i tentou também, sem a especificação da linguagem - grego, neste caso) (O agrupamento é de base de dados é Greek_CI_AS) btw

Select * from static where description_gr like N'%str%'

vai funcionar muito bem ..

todos os campos são do tipo nvarchar e os campos _gr segurar texto Inglês e Grego .. (não importa)

Toda a ajuda será muito apreciada

Foi útil?

Solução

Apenas tentando descobrir o que está acontecendo: o que você ganha com esta consulta aqui

SELECT * FROM static WHERE FREETEXT(*, N'str')

Se você não está especificando explicitamente qualquer coluna para pesquisar? - dá-lhe os resultados esperados

Outro ponto: Eu acho que você tem um ID de idioma errado na sua declaração. De acordo com SQL Server Books Online:

Quando especificado como uma string, corresponde language_term para o alias valor de coluna em syslanguages tabela do sistema. A seqüência deve ser entre aspas simples, como em 'language_term'. Quando especificado como um número inteiro, é o language_term LCID real que identifica o linguagem.

e pelo que eu encontrei na internet pesquisando em torno, o LCID para grego é 1032 - não 19. Você pode tentar com 1032, em vez de 19? Isso faz alguma diferença?

Marc

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top