Sphinx / SphinxQL - 在select上设置权重

时间:2015-11-12 19:37:01

标签: mysql sphinx ranking sphinxql

我正在使用Sphinx,我试图在mysql中执行下一个查询:

SELECT * 
FROM `index_efemerides`, `index_programas`, `index_guias_para_el_aula`, `index_producciones_interactivas` 
WHERE MATCH('(@(titulo,descripcion,etiquetas) nuevo)') 
OPTION `field_weights` = (index_programas.titulo=100, index_programas.etiqueta=15, index_programas.descripcion=5, index_producciones_interactivas.titulo=53, index_producciones_interactivas.etiqueta=13, index_producciones_interactivas.descripcion=5, index_guias_para_el_aula.titulo=52, index_guias_para_el_aula.etiqueta=12, index_guias_para_el_aula.descripcion=5, index_efemerides.titulo=51, index_efemerides.etiqueta=11, index_efemerides.descripcion=5)

但是我收到了下一个错误信息:

sphinxql: syntax error, unexpected SUBKEY, expecting '=' near '.titulo=100, index_programas.etiqueta=15, index_programas.descripcion=5, index_producciones_interactivas.titulo=53, index_producciones_interactivas.etiqueta=13, index_producciones_interactivas.descripcion=5, index_guias_para_el_aula.titulo=52, index_guias_para_el_aula.etiqueta=12, index_guias_para_el_aula.descripcion=5, index_efemerides.titulo=51, index_efemerides.etiqueta=11, index_efemerides.descripcion=5)'

如果我删除它似乎工作(不太确定,因为如果我发明一个字段名称,它不会告诉我任何错误)。但我需要为每个表设置不同的字段权重。

1 个答案:

答案 0 :(得分:0)

我刚刚找到了index_weight属性。一种可能性是使用field_weights补充index_weight,如下所示:

SELECT * FROM `index_efemerides`, `index_programas`, `index_guias_para_el_aula`, `index_producciones_interactivas` WHERE MATCH('(@(titulo,descripcion,etiquetas) nuevo)') OPTION `field_weights` = (titulo=100, etiqueta=15, descripcion=5), `index_weights` = (index_programas=100, index_guias_para_el_aula=50, index_efemerides=75, index_producciones_interactivas=25);

不太确定产生的重量。