- Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 18 anos, 3 meses atrás por
LoadingXp.
-
AutorPosts
-
3 de dezembro de 2007 às 2:29 pm #80889
molmedo
ParticipanteOlá pessoal!
Comecei a trabalhar com oracle há 2 semanas, e ainda estou um pouco perdido com a infinidade de recursos que ele propcia aos desenvolvedores. Estou com um erro em produção que não consigo identificar o problema. Pra que serve o SCORE da query abaixo? E alguem saberia me dizer qual o problema do mesmo?
Obrigado a todos.SELECT COUNT(*) as total
FROM (SELECT SCORE(1) AS rank, iSearch.*, ictDocumentos.idarea , ictAreas.idIdioma FROM iSearch, ictDocumentos, ictAreas WHERE iSearch.idDocumentoiContent = ictDocumentos.idDocumento (+) AND ictDocumentos.idarea = ictAreas.idArea (+) AND CONTAINS(Body,'ABOUT(empresa frota)',1) > 0 ORDER BY SCORE(1) DESC, URL)3 de dezembro de 2007 às 2:55 pm #80890Ishii
ParticipanteBasicamente, o score ira trazer a posição retornada pela query num ranking conforme a condição contains. (por exemplo: 1 lugar, 2 lugar etc). O erro 904 deve ser por causa de alguma das colunas não estar ou com o nome correto ou nao ter nas tabelas referenciadas. Verifique todas as colunas da query.
[]s Ishii
3 de dezembro de 2007 às 7:24 pm #80891molmedo
ParticipanteOla Ishii! Obrigado pelo retorno.
Fiz a verificação dos campos da tabela e não encontrei nenhuma inconformidade com os campos e o erro continua:
ORA-00904: SCORE invalid identifier;
00904.00000 “%s invalid identifier”Será algum problema com a clausula SCORE?
[]
4 de dezembro de 2007 às 2:30 am #80892LoadingXp
ParticipanteOba meu amigo bem vindo ao Oracle
Segue eu vou te mostrar não resolver seu problemas mas vc vai identificar ONDE está o problema, vai mandando para nos depois
SELECT
COUNT() as total
FROM (
[b] SELECT SCORE(1) AS rank,
iSearch.,
ictDocumentos.idarea ,
ictAreas.idIdioma
FROM iSearch,
ictDocumentos,
ictAreas
WHERE
iSearch.idDocumentoiContent = ictDocumentos.idDocumento (+)
AND ictDocumentos.idarea = ictAreas.idArea (+)
AND CONTAINS(Body,'ABOUT(empresa frota)',1) > 0
ORDER BY SCORE(1) DESC, URL[/b]
)Amigo executa a primeira parte que está dentro do seu FROM
SELECT SCORE(1) AS rank,
iSearch.*,
ictDocumentos.idarea ,
ictAreas.idIdioma
FROM iSearch,
ictDocumentos,
ictAreas
WHERE
iSearch.idDocumentoiContent = ictDocumentos.idDocumento (+)
AND ictDocumentos.idarea = ictAreas.idArea (+)
AND CONTAINS(Body,'ABOUT(empresa frota)',1) > 0
ORDER BY SCORE(1) DESC, URL
Concerteza não vai funcionar pois ai esta seu problema. Tenta desabilitar tambem o ORDER BY, se não funcionar desabilita o SCORE
Sua query vai ficar assim:
SELECT --SCORE(1) AS rank,
iSearch.*,
ictDocumentos.idarea ,
ictAreas.idIdioma
FROM iSearch,
ictDocumentos,
ictAreas
WHERE
iSearch.idDocumentoiContent = ictDocumentos.idDocumento (+)
AND ictDocumentos.idarea = ictAreas.idArea (+)
AND CONTAINS(Body,'ABOUT(empresa frota)',1) > 0
ORDER BY /SCORE(1) DESC,/ URL
Manda o erro que retornar depois….
Luciano Alvarenga Maciel Pires
http://fulloracle.blogspot.com
lucianoalvarenga@gmail.com4 de dezembro de 2007 às 1:59 pm #80896molmedo
ParticipanteOlá Luciano.
Obrigado pelo retorno.
Consegui resolver o problema. O problema era que não estava habilitado no servidor a opção ContextSearch. Então foi habilitado e criei um índice de contexto no campo Body da minha tabela. Ae funcionou o SCORE e o CONTAINS.Obrigado.
7 de dezembro de 2007 às 3:42 pm #80911LoadingXp
ParticipanteOtimo!!! Qualquer coisa estamos ai!!!
Gostei do seu comando SCORE, depois vou dar uma olhada!! -
AutorPosts
- Você deve fazer login para responder a este tópico.