zaragoza-sedeelectronica / zaragoza-sedeelectronica.github.io

21 stars 5 forks source link

[SOLR] hay que duplicar temas_smultiple para que devuelva algo la petición #10

Closed jrub closed 9 years ago

jrub commented 9 years ago

Buenas,

He observado que una petición con un único temas_smultiple, por ejemplo fq=temas_smultiple:(%22teatro%22), no devuelve resultados.

Para que funcione, estamos usando, por recomendación de @virtor durante el Hackaton, dos temas_smultiple, uno en mayúscula y otro minúscula (¿?), como: fq=temas_smultiple:(%22teatro%22),(%22Teatro%22)

Pego ejemplos en curl, con petición y respuesta:

curl 'http://www.zaragoza.es/buscador/select?fl=uri,title,id,description,fechaInicio_dt,fechaFinal_dt,imagen_s,lugar_t,coordenadas_p_0_coordinate,coordenadas_p_1_coordinate,coordenadas_p&fq=temas_smultiple:(%22teatro%22),(%22Teatro%22)&json.wrf=angular.callbacks._0&q=*:*+AND+-tipocontenido_s:estatico+AND+category:Actividades+AND+fechaInicio_dt:%5B*+TO+NOW%2B7DAY%5D+AND+fechaFinal_dt:%5BNOW%2B7DAY+TO+*%5D&rows=100&start=0&wt=json'
{
    "responseHeader": {
        "status": 0,
        "QTime": 12,
        "params": {
            "wt": "json",
            "rows": "100",
            "start": "0",
            "json.wrf": "angular.callbacks._0",
            "fq": "temas_smultiple:(\"teatro\"),(\"Teatro\")",
            "q": "*:* AND -tipocontenido_s:estatico AND category:Actividades AND fechaInicio_dt:[* TO NOW+7DAY] AND fechaFinal_dt:[NOW+7DAY TO *]",
            "fl": "uri,title,id,description,fechaInicio_dt,fechaFinal_dt,imagen_s,lugar_t,coordenadas_p_0_coordinate,coordenadas_p_1_coordinate,coordenadas_p"
        }
    },
    "response": {
        "numFound": 51,
        "start": 0,
        "docs": [
            {
[...]
curl 'http://www.zaragoza.es/buscador/select?fl=uri,title,id,description,fechaInicio_dt,fechaFinal_dt,imagen_s,lugar_t,coordenadas_p_0_coordinate,coordenadas_p_1_coordinate,coordenadas_p&fq=temas_smultiple:(%22teatro%22)&json.wrf=angular.callbacks._0&q=*:*+AND+-tipocontenido_s:estatico+AND+category:Actividades+AND+fechaInicio_dt:%5B*+TO+NOW%2B7DAY%5D+AND+fechaFinal_dt:%5BNOW%2B7DAY+TO+*%5D&rows=100&start=0&wt=json'
{"responseHeader":{"status":0,"QTime":10,"params":{"wt":"json","rows":"100","start":"0","json.wrf":"angular.callbacks._0","fq":"temas_smultiple:(\"teatro\")","q":"*:* AND -tipocontenido_s:estatico AND category:Actividades AND fechaInicio_dt:[* TO NOW+7DAY] AND fechaFinal_dt:[NOW+7DAY TO *]","fl":"uri,title,id,description,fechaInicio_dt,fechaFinal_dt,imagen_s,lugar_t,coordenadas_p_0_coordinate,coordenadas_p_1_coordinate,coordenadas_p"}},"response":{"numFound":0,"start":0,"docs":[]},"spellcheck":{"suggestions":["Actividades",{"numFound":1,"startOffset":47,"endOffset":58,"suggestion":["actividades"]},"collation","*:* AND -tipocontenido_s:estatico AND category:actividades AND fechaInicio_dt:[* TO NOW+7DAY] AND fechaFinal_dt:[NOW+7DAY TO *]"]}}

¡Saludos!

virtor commented 9 years ago

La petición correcta es con un sólo Teatro: http://www.zaragoza.es/buscador/select?fl=uri,title,id,description,fechaInicio_dt,fechaFinal_dt,imagen_s,lugar_t,coordenadas_p_0_coordinate,coordenadas_p_1_coordinate,coordenadas_p&fq=temas_smultiple:(%22Teatro%22)&json.wrf=angular.callbacks._0&q=*:*+AND+-tipocontenido_s:estatico+AND+category:Actividades+AND+fechaInicio_dt:%5B*+TO+NOW%2B7DAY%5D+AND+fechaFinal_dt:%5BNOW%2B7DAY+TO+*%5D&rows=100&start=0&wt=json

En la consulta en la que pones dos veces teatro se hace una búsqueda a texto completo y en los resultados aparecen actvidades de temas distintos a Teatro

Saludos y disculpa si te lo dije mal!

jrub commented 9 years ago

¿Entonces, como funciona? Si hay más de una temas_smultiple hace una búsqueda full-text? Y porque la petición con "teatro" en minúsculas no devuelve nada? Como no coincide con un tema, hace búsqueda full text, y da la coincidencia que sorprendentemente en este caso nadie ha usado esa palabra?

Están documentados estos comportamientos en la página de ayuda del api? Por ver si me aclaro

On Friday, April 17, 2015, virtor notifications@github.com wrote:

La petición correcta es con un sólo Teatro:

http://www.zaragoza.es/buscador/select?fl=uri,title,id,description,fechaInicio_dt,fechaFinal_dt,imagen_s,lugar_t,coordenadas_p_0_coordinate,coordenadas_p_1_coordinate,coordenadas_p&fq=temas_smultiple:(%22Teatro%22)&json.wrf=angular.callbacks._0&q=*:*+AND+-tipocontenido_s:estatico+AND+category:Actividades+AND+fechaInicio_dt:%5B*+TO+NOW%2B7DAY%5D+AND+fechaFinal_dt:%5BNOW%2B7DAY+TO+*%5D&rows=100&start=0&wt=json

En la consulta en la que pones dos veces teatro se hace una búsqueda a texto completo y en los resultados aparecen actvidades de temas distintos a Teatro

Saludos y disculpa si te lo dije mal!

— Reply to this email directly or view it on GitHub https://github.com/zaragoza-sedeelectronica/zaragoza-sedeelectronica.github.io/issues/10#issuecomment-93984274 .

Javier Rubio www.javirubio.net

ocorcho commented 9 years ago

Sería bueno añadir esto a la lista FAQ de queries habituales

virtor commented 9 years ago

En la consulta que indicas pones lo siguiente &fq=temas_smultiple:(%22teatro%22),(%22Teatro%22) y aunque me parece que la consulta no es correcta, creo que lo que está haciendo es ignorar la parte de temas_smultiple:(%22teatro%22) y buscar los registros que contienen Teatro en cualquier campo.

La sintaxis de consulta de SOLR está explicada en http://wiki.apache.org/solr/#Search_and_Indexing

jrub commented 9 years ago

Probablemente me sugeriste meter ambos temas_smultiple para que hiciéra búsqueda full_text, puesto que si uso sólo "Teatro", me devuelve (ahora mismo) 1 resultado, frente a 44 con ambos. En minúsculas ("teatro"), devuelve 0.

Si esto es por cómo dan de alta los datos en el backoffice, no asignándolos a la categoría adecuada para el caso de Teatro, entonces está relacionado con el issue #9 y habría que avisar a quien introduce datos de esa categoría para que empiece a hacerlo bien...

Además, si tengo que usar la cadena concreta para que busque en esa categoría, en vez de lanzar búsqueda full_text, molaría que estuviesen documentadas las categorías concretas que podemos usar, más que ponerlo como query habitual de ejemplo que comentaba @ocorcho

¿Entiendo que éstas categorías son las que referencia @virtor en el issue #8 ? ¿Están documentadas por ahí? Si son esas, ¿puedo obtenerlas también por SOLR, no sólo por SPARQL?

Pensad que no tenemos ni idea de cómo están estructurados los datos, vosotros lo tenéis ya interiorizado y os resulta todo más fácil! 😅

Muchas gracias