cognitivzen / elasticray Goto Github PK
View Code? Open in Web Editor NEWLiferay elasticsearch integration
Home Page: http://www.elasticray.com/
License: GNU Affero General Public License v3.0
Liferay elasticsearch integration
Home Page: http://www.elasticray.com/
License: GNU Affero General Public License v3.0
Wiki
Delete not working
Cause: ES doesn't recognizing Field Name
Document
Delete not working
Cause: ES doesn't recognizing Field Name
Folder
Delete not working
Cause: ES doesn't recognizing Field Name
Web Content
Delete not working
Cause: ES doesn't recognizing Field Name
Steps to produce Issue:::
Place Elastic ray war file in Liferay Deploy folder
Next, Start Liferay Server ,whenever Elastic ray War deploying start ,on that time it is displaying Error "AutoDeployeeException:Elastic ray 1.2.0.war does not support this version of liferay"
04:32:58,868 INFO [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][WebAutoDeployListener:48] Copying web plugin for C:\liferay-portal-6.1.1-ce-ga2\deploy\elasticray-web-1.2.0.0.war
04:32:58,872 INFO [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][BaseDeployer:763] Deploying elasticray-web-1.2.0.0.war
04:32:58,875 ERROR [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:210] com.liferay.portal.kernel.deploy.auto.AutoDeployException: com.liferay.portal.kernel.deploy.auto.AutoDeployException: elasticray-web-1.2.0.0.war does not support this version of Liferay
com.liferay.portal.kernel.deploy.auto.AutoDeployException: com.liferay.portal.kernel.deploy.auto.AutoDeployException: elasticray-web-1.2.0.0.war does not support this version of Liferay
at com.liferay.portal.tools.deploy.BaseDeployer.autoDeploy(BaseDeployer.java:201)
at com.liferay.portal.deploy.auto.WebAutoDeployListener.deploy(WebAutoDeployListener.java:51)
at com.liferay.portal.kernel.deploy.auto.AutoDeployDir.processFile(AutoDeployDir.java:193)
at com.liferay.portal.kernel.deploy.auto.AutoDeployDir.scanDirectory(AutoDeployDir.java:235)
at com.liferay.portal.kernel.deploy.auto.AutoDeployScanner.run(AutoDeployScanner.java:54)
Caused by: com.liferay.portal.kernel.deploy.auto.AutoDeployException: elasticray-web-1.2.0.0.war does not support this version of Liferay
at com.liferay.portal.tools.deploy.BaseDeployer.deployFile(BaseDeployer.java:795)
at com.liferay.portal.tools.deploy.BaseDeployer.autoDeploy(BaseDeployer.java:198)
... 4 more
04:33:01,899 INFO [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:182] Processing elasticray-web-1.2.0.0.war. This is attempt 2.
04:33:01,909 INFO [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][WebAutoDeployListener:48] Copying web plugin for C:\liferay-portal-6.1.1-ce-ga2\deploy\elasticray-web-1.2.0.0.war
04:33:01,911 INFO [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][BaseDeployer:763] Deploying elasticray-web-1.2.0.0.war
04:33:01,914 ERROR [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:210] com.liferay.portal.kernel.deploy.auto.AutoDeployException: com.liferay.portal.kernel.deploy.auto.AutoDeployException: elasticray-web-1.2.0.0.war does not support this version of Liferay
com.liferay.portal.kernel.deploy.auto.AutoDeployException: com.liferay.portal.kernel.deploy.auto.AutoDeployException: elasticray-web-1.2.0.0.war does not support this version of Liferay
at com.liferay.portal.tools.deploy.BaseDeployer.autoDeploy(BaseDeployer.java:201)
at com.liferay.portal.deploy.auto.WebAutoDeployListener.deploy(WebAutoDeployListener.java:51)
at com.liferay.portal.kernel.deploy.auto.AutoDeployDir.processFile(AutoDeployDir.java:193)
at com.liferay.portal.kernel.deploy.auto.AutoDeployDir.scanDirectory(AutoDeployDir.java:235)
at com.liferay.portal.kernel.deploy.auto.AutoDeployScanner.run(AutoDeployScanner.java:54)
Caused by: com.liferay.portal.kernel.deploy.auto.AutoDeployException: elasticray-web-1.2.0.0.war does not support this version of Liferay
at com.liferay.portal.tools.deploy.BaseDeployer.deployFile(BaseDeployer.java:795)
at com.liferay.portal.tools.deploy.BaseDeployer.autoDeploy(BaseDeployer.java:198)
... 4 more
1)Wiki,Blogs,Book Marks Case Sensitive Searches Displaying message "No entries were found that matched the keywords:"
Ex:When I Enter "agile" it displaying results see below screen
Next , Create Book Mark name as "Methods" and Click on Save button
Next Enter Book Mark name as "Methods" in the search text field and click on Search button ,The Results are "No Entries were found that matched the keyWord" see below screen
Liferay Versions:: Liferay 6.2 EE SP11
Place Elasticray v1.4.0.0 version in liferay deploy folder and start liferay server
Next,Create users like "Test Screen" (Space Between Two words) as shown below screen
Next ,Add Search portlet in Liferay welcome page and search users,here it is displaying Results but it shows "Null Pointer Exception " in Command Prompt.
Log Details:
08:56:59,182 INFO [localhost-startStop-2][HotDeployImpl:138] Deploying elasticray-web from queue
08:56:59,185 INFO [localhost-startStop-2][PluginPackageUtil:1016] Reading plugin package for elasticray-web
09:00:36,296 ERROR [http-bio-8080-exec-9][IncludeTag:129] Current URL /web/guest/home?p_p_id=3&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&_3_struts_action=%2Fsearch%2Fsearch&_3_redirect=%2Fweb%2Fguest%2Fhome%3Fp_p_state%3Dmaximized%26p_p_lifecycle%3D0%26p_p_id%3D3%26_3_groupId%3D0%26p_p_mode%3Dview&_3_keywords=Portal+platform&_3_groupId=0 generates exception: javax.servlet.ServletException: com.liferay.portal.kernel.search.SearchException: java.lang.NullPointerException
java.lang.NullPointerException
at com.liferay.portal.kernel.search.DefaultSearchResultPermissionFilter.filterHits(DefaultSearchResultPermissionFilter.java:53)
at com.liferay.portal.kernel.search.BaseSearchResultPermissionFilter.search(BaseSearchResultPermissionFilter.java:42)
at com.liferay.portal.kernel.search.BaseIndexer.search(BaseIndexer.java:527)
at org.apache.jsp.html.portlet.search.facets.folders_jsp._jspService(folders_jsp.java:831)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:277)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:274)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:309)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:169)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:299)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:57)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
09:01:19,212 ERROR [http-bio-8080-exec-2][IncludeTag:129] Current URL /web/guest/home?p_p_id=3&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&_3_struts_action=%2Fsearch%2Fsearch&_3_redirect=%2Fweb%2Fguest%2Fhome%3Fp_p_id%3D3%26p_p_lifecycle%3D0%26p_p_state%3Dmaximized%26p_p_mode%3Dview%26_3_groupId%3D0&_3_keywords=Test+Screen&_3_groupId=0 generates exception: com.liferay.portal.kernel.search.SearchException: java.lang.NullPointerException
java.lang.NullPointerException
at com.liferay.portal.kernel.search.DefaultSearchResultPermissionFilter.filterHits(DefaultSearchResultPermissionFilter.java:53)
at com.liferay.portal.kernel.search.BaseSearchResultPermissionFilter.search(BaseSearchResultPermissionFilter.java:42)
at com.liferay.portal.kernel.search.BaseIndexer.search(BaseIndexer.java:527)
at org.apache.jsp.html.portlet.search.facets.folders_jsp._jspService(folders_jsp.java:831)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at com.liferay.portal.servlet.DirectRequestDispatcher.include(DirectRequestDispatcher.java:57)
at com.liferay.portal.security.pacl.servlet.PACLRequestDispatcherWrapper$DispatchPrivilegedExceptionAction.run(PACLRequestDispatcherWrapper.java:111)
at com.liferay.portal.security.pacl.servlet.PACLRequestDispatcherWrapper$DispatchPrivilegedExceptionAction.run(PACLRequestDispatcherWrapper.java:1)
at com.liferay.portal.security.pacl.servlet.PACLRequestDispatcherWrapper.doDispatch(PACLRequestDispatcherWrapper.java:74)
at com.liferay.portal.security.pacl.servlet.PACLRequestDispatcherWrapper.include(PACLRequestDispatcherWrapper.java:56)
at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.doDispatch(ClassLoaderRequestDispatcherWrapper.java:78)
at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.include(ClassLoaderRequestDispatcherWrapper.java:53)
at com.liferay.taglib.util.IncludeTag.include(IncludeTag.java:295)
at com.liferay.taglib.util.IncludeTag.doInclude(IncludeTag.java:192)
at com.liferay.taglib.util.IncludeTag.doEndTag(IncludeTag.java:83)
at org.apache.jsp.html.portlet.search.search_jsp._jspService(search_jsp.java:1156)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at com.liferay.portal.servlet.DirectRequestDispatcher.include(DirectRequestDispatcher.java:57)
A number of files are missed in the reindex if there are too many files in a single folder
This is the 2nd part of the task 14 (#14)
This has been created as a separate task as this involves patching Liferay and hence implies a lot more QA and testing before we release it for production use.
Need to see if we need special analyzers to deal with this.
Results for search are taking too long to show up.
We explored this issue and found that Elasticsearch itself is returning the results fast and elasticray is giving them to Liferay but Liferay permission checking code is slowing up the process.
Liferay is retrieving the permission of each asset/document and matching it to the permissions of the logged in user. i.e. For each asset in the result set, it queries the DB again for its permissions and then matches it against the user. This is not a trivial problem but an abomination none the less and should have been solved earlier. Luckily elasticsearch is the best tool available to solve this problem.
http://stackoverflow.com/questions/10008427/liferay-search-and-security-model
https://issues.liferay.com/browse/LEP-3335
While this is not really a problem with elasticray, unless we handle this, elasticray will not have any utility. We have to try and compensate for Liferay limitation within elasticray.
Solution should be a 2 pronged approach:
We will also need to handle run time changes in asset and/or user permissions but
a) re-indexing partially on the fly OR
b) invalidating partial index on the fly . This will force ES to re-index the changed user/asset/permission.
Other issues to be considered:
Place Elasticray v1.3.0 version in liferay 6.2 CE GA2 deploy folder and Start liferay server
Next Go to Users and Organization portlet and Create user First name as "sample Test" etc and search users in users and organization page see below screen search displaying results .
Next Add search portlet in the Liferay Welcome page and search users using search portlet it is displaying error i.e "Nosuchentryexception" see below screen
Log Details::
09:45:30,263 ERROR [http-bio-8080-exec-5][IncludeTag:129] Current URL /web/guest/welcome?_3_formDate=1432891870973&p_p_id=3&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&_3_struts_action=%2Fsearch%2Fsearch&_3_cur=1&_3_format=&_3_keywords=sample+Test&_3_groupId=0&_3_entryClassName=&_3_folderId=&_3_userId=&_3_modified=&_3_modifiedselection=0&_3_modifiedfrom=&_3_modifiedto= generates exception: com.liferay.portlet.asset.NoSuchEntryException: No AssetEntry exists with the key {classNameId=10009, classPK=10954}
com.liferay.portlet.asset.NoSuchEntryException: No AssetEntry exists with the key {classNameId=10009, classPK=10954}
at com.liferay.portlet.asset.service.persistence.AssetEntryPersistenceImpl.findByC_C(AssetEntryPersistenceImpl.java:2979)
at com.liferay.portal.security.lang.DoPrivilegedHandler$InvokePrivilegedExceptionAction.run(DoPrivilegedHandler.java:167)
at com.liferay.portal.security.lang.DoPrivilegedHandler.doInvoke(DoPrivilegedHandler.java:100)
at com.liferay.portal.security.lang.DoPrivilegedHandler.invoke(DoPrivilegedHandler.java:56)
at com.liferay.portlet.asset.service.impl.AssetEntryLocalServiceImpl.getEntry(AssetEntryLocalServiceImpl.java:238)
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115)
at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:62)
at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:51)
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:175)
at com.liferay.portal.security.pacl.PACLInvocationHandler$InvokePrivilegedExceptionAction.run(PACLInvocationHandler.java:109)
at com.liferay.portal.security.pacl.PACLInvocationHandler.doInvoke(PACLInvocationHandler.java:79)
at com.liferay.portal.security.pacl.PACLInvocationHandler.invoke(PACLInvocationHandler.java:51)
at com.liferay.portlet.asset.service.AssetEntryLocalServiceUtil.getEntry(AssetEntryLocalServiceUtil.java:645)
at org.apache.jsp.html.portlet.search.main_005fsearch_005fresult_005fform_jsp._jspService(main_005fsearch_005fresult_005fform_jsp.java:736)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at com.liferay.portal.servlet.DirectRequestDispatcher.include(DirectRequestDispatcher.java:57)
at com.liferay.portal.security.pacl.servlet.PACLRequestDispatcherWrapper$DispatchPrivilegedExceptionAction.run(PACLRequestDispatcherWrapper.java:111)
at com.liferay.portal.security.pacl.servlet.PACLRequestDispatcherWrapper$DispatchPrivilegedExceptionAction.run(PACLRequestDispatcherWrapper.java:1)
Liferay 6.1 EE GA3, Elastic Search 1.4.0 , Jdk 1.7,Elastic Ray v1.2.0
Place Elastic ray War v1.2.0 version in liferay 6.1.30 ee ga3 deploy folder
Next, start liferay server ,here Elastic Ray War copied successfully but elastic ray plugin Reading time displaying errors like (AccessControlException , BeancreationException,)
Liferay Log Error Details::::
08:36:18,253 INFO [localhost-startStop-2][PACLPolicyManager:148] Overriding the current security manager to enable plugin security management
08:36:18,258 INFO [localhost-startStop-2][HotDeployImpl:185] Deploying elasticray-web from queue
08:36:18,262 INFO [localhost-startStop-2][PluginPackageUtil:1049] Reading plugin package for elasticray-web
08:36:20,319 ERROR [localhost-startStop-2][ContextLoader:227] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.rknowsys.portal.search.elastic.client.ClientFactory' defined in ServletContext resource [/WEB-INF/classes/META-INF/elasticsearch-spring.xml]: Invocation of init method failed; nested exception is java.security.AccessControlException: access denied ("java.io.FilePermission" "elasticsearch.yml" "read")
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1422)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:518)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at com.liferay.portal.spring.context.PortletContextLoaderListener.contextInitialized(PortletContextLoaderListener.java:85)
at com.liferay.portal.deploy.hot.SpringHotDeployListener.doInvokeDeploy(SpringHotDeployListener.java:79)
at com.liferay.portal.deploy.hot.SpringHotDeployListener.invokeDeploy(SpringHotDeployListener.java:41)
at com.liferay.portal.deploy.hot.HotDeployImpl.doFireDeployEvent(HotDeployImpl.java:195)
at com.liferay.portal.deploy.hot.HotDeployImpl.fireDeployEvent(HotDeployImpl.java:97)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.liferay.portal.security.lang.DoPrivilegedHandler.doInvoke(DoPrivilegedHandler.java:88)
at com.liferay.portal.security.lang.DoPrivilegedHandler.invoke(DoPrivilegedHandler.java:56)
at com.sun.proxy.$Proxy30.fireDeployEvent(Unknown Source)
at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:27)
at com.liferay.portal.kernel.servlet.PluginContextListener.fireDeployEvent(PluginContextListener.java:164)
at com.liferay.portal.kernel.servlet.PluginContextListener.doPortalInit(PluginContextListener.java:154)
at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:44)
at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:64)
at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:56)
at com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:54)
at com.liferay.portal.kernel.servlet.PluginContextListener.contextInitialized(PluginContextListener.java:116)
at com.liferay.portal.kernel.servlet.SecurePluginContextListener.contextInitialized(SecurePluginContextListener.java:151)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4887)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1672)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied ("java.io.FilePermission" "elasticsearch.yml" "read")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at com.liferay.portal.security.pacl.PortalSecurityManagerImpl.checkPermission(PortalSecurityManagerImpl.java:265)
at java.lang.SecurityManager.checkRead(Unknown Source)
at java.io.File.exists(Unknown Source)
at org.elasticsearch.env.Environment.resolveConfig(Environment.java:182)
at org.elasticsearch.node.internal.InternalSettingsPreparer.prepareSettings(InternalSettingsPreparer.java:77)
at org.elasticsearch.client.transport.TransportClient.(TransportClient.java:157)
at org.elasticsearch.client.transport.TransportClient.(TransportClient.java:123)
at com.rknowsys.portal.search.elastic.client.ClientFactoryImpl.afterPropertiesSet(ClientFactoryImpl.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$7.run(AbstractAutowireCapableBeanFactory.java:1533)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1531)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1487)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1419)
... 46 more
08:36:20,369 ERROR [localhost-startStop-2][HotDeployImpl:198] com.liferay.portal.kernel.deploy.hot.HotDeployException: Error initializing Spring for elasticray-web
com.liferay.portal.kernel.deploy.hot.HotDeployException: Error initializing Spring for elasticray-web
at com.liferay.portal.kernel.deploy.hot.BaseHotDeployListener.throwHotDeployException(BaseHotDeployListener.java:46)
at com.liferay.portal.deploy.hot.SpringHotDeployListener.invokeDeploy(SpringHotDeployListener.java:44)
at com.liferay.portal.deploy.hot.HotDeployImpl.doFireDeployEvent(HotDeployImpl.java:195)
at com.liferay.portal.deploy.hot.HotDeployImpl.fireDeployEvent(HotDeployImpl.java:97)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.liferay.portal.security.lang.DoPrivilegedHandler.doInvoke(DoPrivilegedHandler.java:88)
at com.liferay.portal.security.lang.DoPrivilegedHandler.invoke(DoPrivilegedHandler.java:56)
at com.sun.proxy.$Proxy30.fireDeployEvent(Unknown Source)
at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:27)
at com.liferay.portal.kernel.servlet.PluginContextListener.fireDeployEvent(PluginContextListener.java:164)
at com.liferay.portal.kernel.servlet.PluginContextListener.doPortalInit(PluginContextListener.java:154)
at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:44)
at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:64)
at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:56)
at com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:54)
at com.liferay.portal.kernel.servlet.PluginContextListener.contextInitialized(PluginContextListener.java:116)
at com.liferay.portal.kernel.servlet.SecurePluginContextListener.contextInitialized(SecurePluginContextListener.java:151)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4887)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1672)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.rknowsys.portal.search.elastic.client.ClientFactory' defined in ServletContext resource [/WEB-INF/classes/META-INF/elasticsearch-spring.xml]: Invocation of init method failed; nested exception is java.security.AccessControlException: access denied ("java.io.FilePermission" "elasticsearch.yml" "read")
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1422)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:518)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at com.liferay.portal.spring.context.PortletContextLoaderListener.contextInitialized(PortletContextLoaderListener.java:85)
at com.liferay.portal.deploy.hot.SpringHotDeployListener.doInvokeDeploy(SpringHotDeployListener.java:79)
at com.liferay.portal.deploy.hot.SpringHotDeployListener.invokeDeploy(SpringHotDeployListener.java:41)
... 31 more
Caused by: java.security.AccessControlException: access denied ("java.io.FilePermission" "elasticsearch.yml" "read")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at com.liferay.portal.security.pacl.PortalSecurityManagerImpl.checkPermission(PortalSecurityManagerImpl.java:265)
at java.lang.SecurityManager.checkRead(Unknown Source)
at java.io.File.exists(Unknown Source)
at org.elasticsearch.env.Environment.resolveConfig(Environment.java:182)
at org.elasticsearch.node.internal.InternalSettingsPreparer.prepareSettings(InternalSettingsPreparer.java:77)
at org.elasticsearch.client.transport.TransportClient.(TransportClient.java:157)
at org.elasticsearch.client.transport.TransportClient.(TransportClient.java:123)
at com.rknowsys.portal.search.elastic.client.ClientFactoryImpl.afterPropertiesSet(ClientFactoryImpl.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$7.run(AbstractAutowireCapableBeanFactory.java:1533)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1531)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1487)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1419)
... 46 more
09:19:09,444 INFO [localhost-startStop-3][PluginPackageUtil:1049] Reading plugin package for elasticray-web
09:19:09,489 INFO [localhost-startStop-3][PACLPolicyManager:115] Disabling PACL policy manager
09:19:09,489 INFO [localhost-startStop-3][PACLPolicyManager:178] Resetting to the original security manager
09:19:09,492 INFO [localhost-startStop-3][PluginPackageUtil:1049] Reading plugin package for portal-compat-hook
09:19:09,511 INFO [localhost-startStop-3][HookHotDeployListener:834] Hook for portal-compat-hook was unregistered
09:19:09,515 INFO [localhost-startStop-3][HotDeployEvent:109] Plugin marketplace-portlet requires portal-compat-hook
09:19:09,515 INFO [localhost-startStop-3][PluginPackageUtil:1049] Reading plugin package for marketplace-portlet
09:19:09,549 INFO [localhost-startStop-3][HookHotDeployListener:834] Hook for marketplace-portlet was unregistered
09:19:09,550 INFO [localhost-startStop-3][PortletHotDeployListener:491] Unregistering portlets for marketplace-portlet
09:19:09,566 INFO [localhost-startStop-3][PortletHotDeployListener:530] 2 portlets for marketplace-portlet was unregistered
Organization search is not working in some scenarios. Like Test Admin (it contains Test-Admin in original), its not giving proper results. It may be due to incorrect analyzer/tokenizer.
Hi, I am trying to set up Liferay with Elasticsearch and use hunspell as analyzer for czech language. I have set up the index with following analyzer definition:
PUT /liferay_0
{
"settings": {
"analysis": {
"analyzer": {
"cestina_hunspell": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"stopwords_CZ",
"cs_CZ",
"icu_folding",
"stopwords_CZ",
"remove_duplicities"
]
}
},
"filter": {
"stopwords_CZ": {
"type": "stop",
"stopwords": [
"právě",
"že",
"_czech_"
],
"ignore_case": true
},
"cs_CZ": {
"type": "hunspell",
"locale": "cs_CZ",
"dedup": true,
"recursion_level": 0
},
"remove_duplicities": {
"type": "unique",
"only_on_same_position": true
}
}
}
}
}
It seems to work on czech text, when I try to call the analyzer through the REST API:
curl 'localhost:9200/i/_analyze?analyzer=cestina_hunspell&pretty=true' -d 'Právě se mi zdálo, že se kolem okna něco mihlo.'
I get tokens:
which are the wanted tokens.
But when I try to search web content with such text (indexed after new settings) I don´t get right results (I have to provide exact word, to get result).
Any ideas what could cause this behaviour.
Thanks.
hi,
We have tried to integrate Liferay with ElasticSearch service from AWS. We have encountered a problem: this pllugin is using TCP ports and AWS ES only allows HTTP access.
Does anyone found this limitation? is there a way to fix it?
Thank you.
Regards,
Versions :: Liferay 6.2 CE GA2,Elastic Search 1.4.0,Elastic Ray v1.3.0.0 ,Jdk 1.5
Place Elastic Ray war file in liferay Deploy folder & Start liferay Application Server
Next, Go to Admin > Click on Control panel tab
Next ,Click on Server administration Link button in Control panel
Next ,Click on Execute button near 'Reindex all search indexes'
Next Create users and organization
Next ,search users & Organization in user and Organization page ,Here It is displaying Results see below screen
Next Add Search Protlet by click on Add Button in Liferay welcome page
While try to do user or organization search using search portlet ,it is displaying "SearchParseException & ClassCastException" in Elastic Search 1.4.0 Console page
[2015-03-30 12:40:05,632][DEBUG][action.search.type ] [Astrid Bloom] [liferay][3], node[EZ4sfc8cT6yYm06QAU9-PQ], [P], s[STARTED]: Failed to execute [org.elasticsearch.action.search.SearchRequest@ffd379]
org.elasticsearch.search.SearchParseException: [liferay][3]: query[+(+companyId:10154 +((+entryClassName:com.liferay.portal.model.user +status:0) (+entryClassName:com.liferay.portlet.bookmarks.model.bookmarksentry +status:0) (+entryClassName:com.liferay.portlet.bookmarks.model.bookmarksfolder +status:0) (+entryClassName:com.liferay.portlet.blogs.model.blogsentry +status:0) (+entryClassName:com.liferay.portlet.documentlibrary.model.dlfileentry +status:0 +hidden:false) (+entryClassName:com.liferay.portlet.documentlibrary.model.dlfolder +status:0 +hidden:false) (+entryClassName:com.liferay.portlet.journal.model.journalarticle +status:0 +head:true) (+entryClassName:com.liferay.portlet.journal.model.journalfolder +status:0) (+entryClassName:com.liferay.portlet.messageboards.model.mbmessage +status:0 +discussion:false) (+entryClassName:com.liferay.portlet.wiki.model.wikipage +status:0))) +(assetCategoryTitles:versionassetCategoryTitles_en_US:version assetTagNames:version comments:version content:version description:version properties:version title:version url:version userName:version city:version country:version emailAddress:version firstName:version fullName:version lastName:version middleName:version region:version screenName:version street:version zip:version ddmContent:version extension:version fileEntryTypeId:version path:version classPK:version content_en_US:version description_en_US:version entryClassPK:version title_en_US:version type:version articleId:version)],from[0],size[25]: Parse Failure [Failed to parse source [{"from":0,"size":25,"query":{"query_string":{"query":"+(+(companyId:10154) +((+(entryClassName:com.liferay.portal.model.User) +(status:0)) (+(entryClassName:com.liferay.portlet.bookmarks.model.BookmarksEntry) +(status:0)) (+(entryClassName:com.liferay.portlet.bookmarks.model.BookmarksFolder) +(status:0)) (+(entryClassName:com.liferay.portlet.blogs.model.BlogsEntry) +(status:0)) (+(entryClassName:com.liferay.portlet.documentlibrary.model.DLFileEntry) +(status:0) +(hidden:false)) (+(entryClassName:com.liferay.portlet.documentlibrary.model.DLFolder) +(status:0) +(hidden:false)) (+(entryClassName:com.liferay.portlet.journal.model.JournalArticle) +(status:0) +(head:true)) (+(entryClassName:com.liferay.portlet.journal.model.JournalFolder) +(status:0)) (+(entryClassName:com.liferay.portlet.messageboards.model.MBMessage) +(status:0) +(discussion:false)) (+(entryClassName:com.liferay.portlet.wiki.model.WikiPage) +(status:0)))) +(assetCategoryTitles:versionassetCategoryTitles_en_US:version assetTagNames:version comments:version content:version description:version properties:version title:version url:version userName:version city:version country:version emailAddress:version firstName:version fullName:version lastName:version middleName:version region:version screenName:version street:version zip:version ddmContent:version extension:Version fileEntryTypeId:version path:version classPK:version content_en_US:version description_en_US:version entryClassPK:Version title_en_US:version type:Version articleId:version)"}},"sort":[{"_score":{}}],"facets":{"userId":{"terms":{"field":"userId","size":10}},"assetTagNames":{"terms":{"field":"assetTagNames","size":10}},"modified":{"range":{"field":"modified","ranges":[{"from":"20150330060000","to":"20150330080000"},{"from":"20150329070000","to":"20150330080000"},{"from":"20150323070000","to":"20150330080000"},{"from":"20150302070000","to":"20150330080000"},{"from":"20140330070000","to":"20150330080000"}]}},"assetCategoryIds":{"terms":{"field":"assetCategoryIds","size":10}},"entryClassName":{"terms":{"field":"entryClassName","size":10}},"folderId":{"terms":{"field":"folderId","size":10}},"groupId":{"terms":{"field":"groupId","size":10}}},"highlight":{"fields":{"content":{"fragment_size":80,"number_of_fragments":3},"title":{"fragment_size":80,"number_of_fragments":3},"content_en_US":{"fragment_size":80,"number_of_fragments":3},"title_en_US":{"fragment_size":80,"number_of_fragments":3}}}}]]
at org.elasticsearch.search.SearchService.parseSource(SearchService.java:681)
at org.elasticsearch.search.SearchService.createContext(SearchService.java:537)
at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:509)
at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:264)
at org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231)
at org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228)
at org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number
at org.elasticsearch.search.facet.range.RangeFacetParser.parse(RangeFacetParser.java:163)
at org.elasticsearch.search.facet.FacetParseElement.parse(FacetParseElement.java:93)
at org.elasticsearch.search.SearchService.parseSource(SearchService.java:665)
... 9 more
Can we have spelling suggestions during query entry? Similar to google but the suggestions will be from indexed words and not standard dictionary.
Can we have "did you mean xxxxx" similar to google suggestions.
Earlier war was wrongly named as elasticsearch, this should be renamed as elasticray-web for better nomenclature.
Log level is by default 'info' which is filling up log files with un-necessary data. This level should be changed to 'debug' at appropriate places.
Plugin doesn't honor the page size. It is always showing 10 results.
Only maximum of 10 are seen.
I assume this project is dead?
Page Delete:
Delete not working
Cause: ES doesn't recognize Field Name
In the result list, we need to turn on "highlighting" of the input search term.
We need to add and configure proper PACL for Enterprise use.
It throws an error with respect to mismatched version. Elastic search was expecting a newer version but liferay submits an older version.
While Searching a File in Media Gallery portlet, results are not display. And portlet/Liferay is sending a request to ES server. Please find the below query for details.
12:47:24,684 INFO [http-bio-9090-exec-10][ElasticsearchIndexSearcher:48] Query String {
"query_string" : {
"query" : "+(+((+(entryClassName:com.liferay.portlet.documentlibrary.model.DLFileEntry) +(status:0) +(folderId:2247701))) +(+(groupId:1975084) +(scopeGroupId:1975084))) +(assetCategoryTitles:jim assetTagNames:jim comments:jim content:jim description:jim properties:jim title:jim url:jim userName:jim ddm/2003137/select2235:jim ddm/2003137/select3212:jim ddm/2003137/select4115:jim ddm/2003137/select5069:jim ddm/2003138/select2305:jim ddm/2003138/select3229:jim ddm/2003138/select4282:jim ddm/2003139/ddm-date3054:jim ddm/2003139/text2217:jim ddm/2003139/text4569:jim ddm/2003139/text5638:jim ddm/2003139/textarea6584:jim ddm/2003139/textarea7502:jim ddm/2003141/ddm-date18949:jim ddm/2003141/ddm-date20127:jim ddm/2003141/select10264:jim ddm/2003141/select4893:jim ddm/2003141/text14822:jim ddm/2003141/text17700:jim ddm/2003141/text2087:jim ddm/2003143/radio5547:jim ddm/2003143/text2033:jim ddm/2003143/textarea2873:jim ddm/2003145/text2082:jim ddm/2003145/text2979:jim ddm/2003147/select2890:jim ddm/2003147/select3864:jim ddm/2003147/select4831:jim ddm/2003147/select5929:jim ddm/2003147/text1993:jim ddm/2003148/ClimateForcast_PROGRAM_ID:jim ddm/2003148/ClimateForcast_COMMAND_LINE:jim ddm/2003148/ClimateForcast_HISTORY:jim ddm/2003148/ClimateForcast_TABLE_ID:jim ddm/2003148/ClimateForcast_INSTITUTION:jim ddm/2003148/ClimateForcast_SOURCE:jim ddm/2003148/ClimateForcast_CONTACT:jim ddm/2003148/ClimateForcast_PROJECT_ID:jim ddm/2003148/ClimateForcast_CONVENTIONS:jim ddm/2003148/ClimateForcast_REFERENCES:jim ddm/2003148/ClimateForcast_ACKNOWLEDGEMENT:jim ddm/2003148/ClimateForcast_REALIZATION:jim ddm/2003148/ClimateForcast_EXPERIMENT_ID:jim ddm/2003148/ClimateForcast_COMMENT:jim ddm/2003148/ClimateForcast_MODEL_NAME_ENGLISH:jim ddm/2003148/CreativeCommons_LICENSE_URL:jim ddm/2003148/CreativeCommons_LICENSE_LOCATION:jim ddm/2003148/CreativeCommons_WORK_TYPE:jim ddm/2003148/DublinCore_NAMESPACE_URI_DC:jim ddm/2003148/DublinCore_NAMESPACE_URI_DC_TERMS:jim ddm/2003148/DublinCore_PREFIX_DC:jim ddm/2003148/DublinCore_PREFIX_DC_TERMS:jim ddm/2003148/DublinCore_FORMAT:jim ddm/2003148/DublinCore_IDENTIFIER:jim ddm/2003148/DublinCore_MODIFIED:jim ddm/2003148/DublinCore_CONTRIBUTOR:jim ddm/2003148/DublinCore_COVERAGE:jim ddm/2003148/DublinCore_CREATOR:jim ddm/2003148/DublinCore_CREATED:jim ddm/2003148/DublinCore_DATE:jim ddm/2003148/DublinCore_DESCRIPTION:jim ddm/2003148/DublinCore_LANGUAGE:jim ddm/2003148/DublinCore_PUBLISHER:jim ddm/2003148/DublinCore_RELATION:jim ddm/2003148/DublinCore_RIGHTS:jim ddm/2003148/DublinCore_SOURCE:jim ddm/2003148/DublinCore_SUBJECT:jim ddm/2003148/DublinCore_TITLE:jim ddm/2003148/DublinCore_TYPE:jim ddm/2003148/Geographic_LATITUDE:jim ddm/2003148/Geographic_LONGITUDE:jim ddm/2003148/Geographic_ALTITUDE:jim ddm/2003148/HttpHeaders_CONTENT_ENCODING:jim ddm/2003148/HttpHeaders_CONTENT_LANGUAGE:jim ddm/2003148/HttpHeaders_CONTENT_LENGTH:jim ddm/2003148/HttpHeaders_CONTENT_LOCATION:jim ddm/2003148/HttpHeaders_CONTENT_DISPOSITION:jim ddm/2003148/HttpHeaders_CONTENT_MD5:jim ddm/2003148/HttpHeaders_CONTENT_TYPE:jim ddm/2003148/HttpHeaders_LAST_MODIFIED:jim ddm/2003148/HttpHeaders_LOCATION:jim ddm/2003148/Message_MESSAGE_RECIPIENT_ADDRESS:jim ddm/2003148/Message_MESSAGE_FROM:jim ddm/2003148/Message_MESSAGE_TO:jim ddm/2003148/Message_MESSAGE_CC:jim ddm/2003148/Message_MESSAGE_BCC:jim ddm/2003148/MSOffice_KEYWORDS:jim ddm/2003148/MSOffice_COMMENTS:jim ddm/2003148/MSOffice_LAST_AUTHOR:jim ddm/2003148/MSOffice_AUTHOR:jim ddm/2003148/MSOffice_APPLICATION_NAME:jim ddm/2003148/MSOffice_REVISION_NUMBER:jim ddm/2003148/MSOffice_TEMPLATE:jim ddm/2003148/MSOffice_TOTAL_TIME:jim ddm/2003148/MSOffice_PRESENTATION_FORMAT:jim ddm/2003148/MSOffice_NOTES:jim ddm/2003148/MSOffice_MANAGER:jim ddm/2003148/MSOffice_APPLICATION_VERSION:jim ddm/2003148/MSOffice_VERSION:jim ddm/2003148/MSOffice_CONTENT_STATUS:jim ddm/2003148/MSOffice_CATEGORY:jim ddm/2003148/MSOffice_COMPANY:jim ddm/2003148/MSOffice_SECURITY:jim ddm/2003148/MSOffice_SLIDE_COUNT:jim ddm/2003148/MSOffice_PAGE_COUNT:jim ddm/2003148/MSOffice_PARAGRAPH_COUNT:jim ddm/2003148/MSOffice_LINE_COUNT:jim ddm/2003148/MSOffice_WORD_COUNT:jim ddm/2003148/MSOffice_CHARACTER_COUNT:jim ddm/2003148/MSOffice_CHARACTER_COUNT_WITH_SPACES:jim ddm/2003148/MSOffice_TABLE_COUNT:jim ddm/2003148/MSOffice_IMAGE_COUNT:jim ddm/2003148/MSOffice_OBJECT_COUNT:jim ddm/2003148/MSOffice_EDIT_TIME:jim ddm/2003148/MSOffice_CREATION_DATE:jim ddm/2003148/MSOffice_LAST_SAVED:jim ddm/2003148/MSOffice_LAST_PRINTED:jim ddm/2003148/MSOffice_USER_DEFINED_METADATA_NAME_PREFIX:jim ddm/2003148/TIFF_BITS_PER_SAMPLE:jim ddm/2003148/TIFF_IMAGE_LENGTH:jim ddm/2003148/TIFF_IMAGE_WIDTH:jim ddm/2003148/TIFF_SAMPLES_PER_PIXEL:jim ddm/2003148/TIFF_FLASH_FIRED:jim ddm/2003148/TIFF_EXPOSURE_TIME:jim ddm/2003148/TIFF_F_NUMBER:jim ddm/2003148/TIFF_FOCAL_LENGTH:jim ddm/2003148/TIFF_ISO_SPEED_RATINGS:jim ddm/2003148/TIFF_EQUIPMENT_MAKE:jim ddm/2003148/TIFF_EQUIPMENT_MODEL:jim ddm/2003148/TIFF_SOFTWARE:jim ddm/2003148/TIFF_ORIENTATION:jim ddm/2003148/TIFF_RESOLUTION_HORIZONTAL:jim ddm/2003148/TIFF_RESOLUTION_VERTICAL:jim ddm/2003148/TIFF_RESOLUTION_UNIT:jim ddm/2003148/TIFF_ORIGINAL_DATE:jim ddm/2003148/TikaMetadataKeys_RESOURCE_NAME_KEY:jim ddm/2003148/TikaMetadataKeys_PROTECTED:jim ddm/2003148/TikaMetadataKeys_EMBEDDED_RELATIONSHIP_ID:jim ddm/2003148/TikaMimeKeys_TIKA_MIME_FILE:jim ddm/2003148/TikaMimeKeys_MIME_TYPE_MAGIC:jim ddm/2003148/XMPDM_DURATION:jim ddm/2003148/XMPDM_ABS_PEAK_AUDIO_FILE_PATH:jim ddm/2003148/XMPDM_ALBUM:jim ddm/2003148/XMPDM_ALT_TAPE_NAME:jim ddm/2003148/XMPDM_ARTIST:jim ddm/2003148/XMPDM_AUDIO_MOD_DATE:jim ddm/2003148/XMPDM_AUDIO_SAMPLE_RATE:jim ddm/2003148/XMPDM_AUDIO_SAMPLE_TYPE:jim ddm/2003148/XMPDM_AUDIO_CHANNEL_TYPE:jim ddm/2003148/XMPDM_AUDIO_COMPRESSOR:jim ddm/2003148/XMPDM_COMPOSER:jim ddm/2003148/XMPDM_COPYRIGHT:jim ddm/2003148/XMPDM_ENGINEER:jim ddm/2003148/XMPDM_FILE_DATA_RATE:jim ddm/2003148/XMPDM_GENRE:jim ddm/2003148/XMPDM_INSTRUMENT:jim ddm/2003148/XMPDM_KEY:jim ddm/2003148/XMPDM_LOG_COMMENT:jim ddm/2003148/XMPDM_LOOP:jim ddm/2003148/XMPDM_NUMBER_OF_BEATS:jim ddm/2003148/XMPDM_METADATA_MOD_DATE:jim ddm/2003148/XMPDM_PULL_DOWN:jim ddm/2003148/XMPDM_RELATIVE_PEAK_AUDIO_FILE_PATH:jim ddm/2003148/XMPDM_RELEASE_DATE:jim ddm/2003148/XMPDM_SCALE_TYPE:jim ddm/2003148/XMPDM_SCENE:jim ddm/2003148/XMPDM_SHOT_DATE:jim ddm/2003148/XMPDM_SHOT_LOCATION:jim ddm/2003148/XMPDM_SHOT_NAME:jim ddm/2003148/XMPDM_SPEAKER_PLACEMENT:jim ddm/2003148/XMPDM_STRETCH_MODE:jim ddm/2003148/XMPDM_TAPE_NAME:jim ddm/2003148/XMPDM_TEMPO:jim ddm/2003148/XMPDM_TIME_SIGNATURE:jim ddm/2003148/XMPDM_TRACK_NUMBER:jim ddm/2003148/XMPDM_VIDEO_ALPHA_MODE:jim ddm/2003148/XMPDM_VIDEO_ALPHA_UNITY_IS_TRANSPARENT:jim ddm/2003148/XMPDM_VIDEO_COLOR_SPACE:jim ddm/2003148/XMPDM_VIDEO_COMPRESSOR:jim ddm/2003148/XMPDM_VIDEO_FIELD_ORDER:jim ddm/2003148/XMPDM_VIDEO_FRAME_RATE:jim ddm/2003148/XMPDM_VIDEO_MOD_DATE:jim ddm/2003148/XMPDM_VIDEO_PIXEL_DEPTH:jim ddm/2003148/XMPDM_VIDEO_PIXEL_ASPECT_RATIO:jim extension:jim fileEntryTypeId:jim path:jim)"
}
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.