problema creacion de documentos con Web services y busquedas

cancel
Showing results for 
Search instead for 
Did you mean: 
magno_6045
Member II

problema creacion de documentos con Web services y busquedas

Hola,
tengo un problema con el que llevo varios días y que no encuentro solución…
Estoy desarrollando unos portlets para liferay que acceden a alfresco. Bien, tengo uno de crear contenidos, en el que creo archivos a traves de la api de los web services. este es el codigo que utilizo:
     Store storeRef = new Store(Constants.WORKSPACE_STORE, "SpacesStore"); 
                 ParentReference companyHomeParent = new ParentReference(storeRef, null, "/app:company_home", Constants.ASSOC_CONTAINS, null);
                 companyHomeParent.setChildName("cm:" + name);
                  NamedValue[] contentProps = new NamedValue[1];  
                 contentProps[0] = Utils.createNamedValue(Constants.PROP_NAME, name);  
                 CMLCreate create = new CMLCreate("1", companyHomeParent, null, null, null, Constants.TYPE_CONTENT, contentProps);
                 NamedValue[] titledProps = new NamedValue[2];
                 titledProps[0] = Utils.createNamedValue(Constants.PROP_TITLE, titulo);
                 titledProps[1] = Utils.createNamedValue(Constants.PROP_DESCRIPTION, descripción);
                 CMLAddAspect addAspect = new CMLAddAspect(Constants.ASPECT_TITLED, titledProps, null, "1");
                 CML cml = new CML();
                 cml.setCreate(new CMLCreate[] {create});
                 cml.setAddAspect(new CMLAddAspect[] {addAspect});
                 UpdateResult[] result = WebServiceFactory.getRepositoryService().update(cml);
                 Reference content = result[0].getDestination();
                 ContentServiceSoapBindingStub contentService = WebServiceFactory.getContentService();
                 String text = textoHTML;
                 // hay que darle el formato segun el tipo!!!
                 ContentFormat contentFormat=null;
              
                 if (tipo.equalsIgnoreCase("html")){
                    contentFormat = new ContentFormat("application/msword", "UTF-8");
                 }
                 if (tipo.equalsIgnoreCase("txt")){
                    contentFormat = new ContentFormat("plain/text", "UTF-8");
                 }
                 if (tipo.equalsIgnoreCase("pdf")){
                    contentFormat = new ContentFormat("application/pdf", "UTF-8");
                 }          
               
                 contentService.write(content, Constants.PROP_CONTENT, text.getBytes(), contentFormat); 

el caso es que me crea el documento que sea bien. voy al alfresco lo miro y todo correcto, abre bien, se lee bien, puedo editarlo, borrarlo, etc…
Total, que tengo otro portlet de busqueda que al intentar buscar por nombre o texto, solo me encuentra los documentos que yo haya creado desde alfresco, no los que yo he creado "manualmente" desde mi otro portlet. Es decir, que algo me tiene que faltar a la hora de crear los documentos propios que haga que luego no aparezcan en las busquedas…no tengo mucha idea de lucene ni nada de esto, por lo que he leido se supoe que indexa el solito, pero no estoy segura de que me lo este haciendo y no se si tendria que darle alguna opcion o algo, bien a la hora de crear el documento, bien a la hora de buscarlo…
este es el codigo de la busqueda:
          String luceneQuery ="@cm\\:name:"+name+"" ;
             Query query = new Query("lucene", luceneQuery);     
             Store storeRef = new Store("workspace", "SpacesStore");
Agradeceria cualquier indicación porque llevo varios dias con este embrollo y no doy con la solución…
Muchas gracias!!
2 Replies
venzia
Senior Member

Re: problema creacion de documentos con Web services y busquedas

Prueba cambiando el query a String luceneQuery ="@cm\\:name:"+name ; .. por lo que veo le sobra/falta una comilla según quieras hacer búsquedas literales o no (como comillas son literales) .. puedes utilizar wildcards, con lo que una búsqueda más genérica sería  String luceneQuery ="@cm\\:name:*"+name +"*";
Ya nos cuentas.
Saludos,
magno_6045
Member II

Re: problema creacion de documentos con Web services y busquedas

Gracias Innovasoft, he probado con ambas busquedas y sigue sin funcionarme…
te explico, yo tendria que buscar por el nombre exacto, es para hacer una comprobación previa a la creación de un documento, para que no haya documentos repetidos con el mismo nombre, porque casca al intentar crearlos. entonces una vez que el usuario, mete el nombre deseado, lo que hago es lanzar un me´todo que hace una query para ver si ese nombre ya existe, por lo que necesitaria una query exacta por el nombre. como vi que eso no era posible por lo que lei por ahi, estoy intentando que me devuelva los que haya "parecidos", por ejemplo si tengo estos tres documentos http://www.docx, wwww.docx y wwwww.docx, que me devuelva los tres y luego comparar el nombre de cada uno con el nombre exacto que yo tengo…pero las busquedas no me funcionan bien, ni siquiera en alfresco me busca bien, si pongo por ejemplo http://www.docx no me encuentra eldocumento del mismo nombre. si le pongo asteriscos www* entonces si que me los encuentra
no se, no se si es que no entiendo bien las busquedas o tengo algun problema. yo cuando creo el documento, le pongo como nombre: nombre.extensión y a los word les pongo .docx y a los textos .txt por loq ue al buscar por nombre, incluyo la extensión en la busqueda, no se si podria estar relacionado con eso…
gracias por tu ayuda!