Pergunta

Decidimos usar o MongoDB para algum aplicativo da Web (em vez de MySQL), mas queremos ficar com a SPHINX para indexação/pesquisa de todos os dados armazenados no MongoDB. Como o ID do objeto MongoDB é um hash por padrão-e queremos ficar com isso-agora há um problema no uso da Esfinge. Como diz na documentação da Esfinge:

Todos os IDs do documento devem ser números inteiros diferentes de zero não assinados (32 bits ou 64 bits, dependendo das configurações de tempo de construção).

Então ... qual é a melhor maneira de resolver esse problema ... como podemos mapear o objeto MongoDB-ID para um número inteiro diferente de zero (e voltar)?

ATUALIZAR

A resposta de Casey é a direção certa para analisar, no entanto, os atributos da string estão na versão dev atual disponível apenas para o SQL DataSource. Para xmlpipe, é necessário aplicar um patch na fonte de checkout. mais informações sobre isso podem ser encontradas no Fórum de Esfinge.

Foi útil?

Solução

Você não pode usar o ID do objeto como um documento SPHINX - os IDs de objeto MongoDB são maiores que o tamanho máximo dos IDs de documentos da SPHINX.

Em vez disso, você pode incrementar um ID exclusivo ao gerar o XML que a Sphinx vai processar (estou assumindo que você está usando o XMLPipe para obter seus dados mongonos no SPHINX?) E armazenar o ID do objeto MongoDB como um atributo de string no SPHINX.

Você precisará da versão mais recente de desenvolvimento da Sphinx para fazer isso - veja minha resposta para esta pergunta para obter mais detalhes: Esfinge sem usar um ID do Auto_incrent

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