systemadmin.es > Buscador > WARNING: duplicate document ids found – Identificadores de 32 o 64 bits en Sphinx

WARNING: duplicate document ids found – Identificadores de 32 o 64 bits en Sphinx

En el caso de realizar una indexación sobre una tabla muy grande se puede producir un WARNING sobre la primary key: “duplicate document ids found“. Esto puede indicar que el sphinx esta usando identificadores de 32 bits aúnque el binario sea de 64 bits.

El error en el indexer sería:

indexing index 'wp_posts'...
collected 1302601 docs, 43.5 MB
sorted 7.6 Mhits, 100.0% done
WARNING: duplicate document ids found

Incluso si el binario es de 64 bits:

# file /usr/local/bin/searchd
/usr/local/bin/searchd: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
# file /usr/local/bin/indexer
/usr/local/bin/indexer: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

El sphinx internamente sigue usando 32 bits para los identificadores. Para cambiar de 32 a 64 bits deberemos recompilar con la opción –enable-id64

# ./configure --help | grep 64
  --enable-id64           use 64-bit document and word IDs (default is no)

Deberemos tener en cuenta que al recompliar también deberemos reindexar, ya que los índices ya generados dejaran de ser validos.

Seguramente se trata de algún tema de compatibilidad con la versión de 32 bits, pero resulta curioso como por defecto se compila con 32 bits aunque tengas el sistema a 64 bits. Me parecería más lógico que pudieras compilar la versión de 64 bits usando IDs de 32, pero que se tuviera que definir explicitamente.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>