Apache Jackrabbit JCA 2.7.5 .docx和.xlsx索引 [英] Apache Jackrabbit JCA 2.7.5 .docx and .xlsx indexing
问题描述
我正在使用Appache Jackrabbit JCA 2.7.5,问题是文件.docx和.xlsx没有编入索引。
I'm ussing the Appache Jackrabbit JCA 2.7.5, the problem is that files .docx and .xlsx is not indexed.
我的步骤:
- 部署 Jackrabbit JCA 作为
资源适配器
on glassfish - 创建
连接器连接用于
,表示资源适配器
的池ConfigFile = path / to / the / repository.xml
和HomeDir = path / to / //错过repository.xml
- 创建
连接器资源
用于连接器池(jndi) - 创建Web应用程序
-
创建类以从中获取会话连接器资源(下面的代码)
- Deploy the Jackrabbit JCA as
resource adapter
on glassfish - create a
Connector Connection Pool
for theresource adapter
indicating theConfigFile=path/to/the/repository.xml
andHomeDir=path/to/the //miss the repository.xml
- create a
Connector Resources
for the connector pool (the jndi) - create web application
create class to get session from the connector ressources (code below)
import java.io.Serializable;
import java.net.MalformedURLException;
import javax.annotation.Resource;
import javax.ejb.Stateless;
import javax.jcr.LoginException;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.naming.InitialContext;
import javax.naming.NamingException;
@Stateless
public class OcmRepository implements Serializable {
public Repository repository;
public Session session;
public OcmRepository() {
}
public Session getSession(String log, String mdp) throws LoginException, RepositoryException, NamingException, MalformedURLException {
InitialContext initalContext = new InitialContext();
repository = (Repository) initalContext.lookup("jndi/jca");
session = repository.login(new SimpleCredentials(log, mdp.toCharArray()), null);
return session;
}
}
创建自定义文件类型
Create custom filetype
import javax.jcr.PropertyType;
import javax.jcr.Session;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.NodeTypeManager;
import javax.jcr.nodetype.NodeTypeTemplate;
import javax.jcr.nodetype.PropertyDefinitionTemplate;
/**
*
* @author nathan
*/
public class FileType {
public static void RegisterFileType(Session session) throws Exception {
NodeTypeManager nodeTypeManager = session.getWorkspace().getNodeTypeManager();
NodeTypeTemplate nodeType = nodeTypeManager.createNodeTypeTemplate();
nodeType.setName("FileType");
String[] str = {"nt:resource"};
nodeType.setDeclaredSuperTypeNames(str);
nodeType.setMixin(false);
nodeType.setQueryable(true);
PropertyDefinitionTemplate path = nodeTypeManager.createPropertyDefinitionTemplate();
path.setName("jcr:path");
path.setRequiredType(PropertyType.PATH);
path.setQueryOrderable(false);
path.setFullTextSearchable(false);
nodeType.getPropertyDefinitionTemplates().add(path);
PropertyDefinitionTemplate nom = nodeTypeManager.createPropertyDefinitionTemplate();
nom.setName("jcr:nom");
nom.setRequiredType(PropertyType.STRING);
nom.setQueryOrderable(true);
nom.setFullTextSearchable(true);
nodeType.getPropertyDefinitionTemplates().add(nom);
PropertyDefinitionTemplate description = nodeTypeManager.createPropertyDefinitionTemplate();
description.setName("jcr:description");
description.setRequiredType(PropertyType.STRING);
description.setQueryOrderable(true);
description.setFullTextSearchable(true);
nodeType.getPropertyDefinitionTemplates().add(description);
PropertyDefinitionTemplate motsCles = nodeTypeManager.createPropertyDefinitionTemplate();
motsCles.setName("jcr:motsCles");
motsCles.setRequiredType(PropertyType.STRING);
motsCles.setQueryOrderable(true);
motsCles.setFullTextSearchable(true);
nodeType.getPropertyDefinitionTemplates().add(motsCles);
PropertyDefinitionTemplate size = nodeTypeManager.createPropertyDefinitionTemplate();
size.setName("jcr:size");
size.setRequiredType(PropertyType.STRING);
size.setQueryOrderable(true);
size.setFullTextSearchable(false);
nodeType.getPropertyDefinitionTemplates().add(size);
PropertyDefinitionTemplate users = nodeTypeManager.createPropertyDefinitionTemplate();
users.setName("jcr:users");
users.setRequiredType(PropertyType.STRING);
users.setQueryOrderable(true);
users.setFullTextSearchable(false);
nodeType.getPropertyDefinitionTemplates().add(users);
PropertyDefinitionTemplate groupe = nodeTypeManager.createPropertyDefinitionTemplate();
groupe.setName("jcr:groupe");
groupe.setRequiredType(PropertyType.STRING);
groupe.setQueryOrderable(true);
groupe.setFullTextSearchable(false);
nodeType.getPropertyDefinitionTemplates().add(groupe);
NodeType newnodetype = nodeTypeManager.registerNodeType(nodeType, true);
session.save();
}
}
创建抽象类持久性
Create the abstract class for persistence
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.jcr.Session;
import org.apache.jackrabbit.ocm.query.Filter;
import org.apache.jackrabbit.ocm.query.impl.FilterImpl;
import org.apache.jackrabbit.ocm.query.impl.QueryImpl;
import org.apache.jackrabbit.ocm.query.Query;
import org.apache.jackrabbit.ocm.query.QueryManager;
import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
import org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl;
import org.apache.jackrabbit.ocm.mapper.Mapper;
import org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationMapperImpl;
import org.apache.jackrabbit.ocm.reflection.ReflectionUtils;
/**
*
* @author nathan
*/
public abstract class AbstractBean<T> {
private Class<T> entityClass;
private ObjectContentManager ocm;
private Mapper mapper;
public AbstractBean(Class<T> entityClass){
this.entityClass = entityClass;
}
/**
* Construct the Bean according to the extended class
* This will be also construct the ObjectContentManager nammed ocm with the default Mapper
* @param session javax.jcr.Session attached to the Bean
* @return The mapping class found for the desired java bean class
*/
public AbstractBean(Class<T> entityClass,Session session){
this.entityClass = entityClass;
ocm = new ObjectContentManagerImpl(session, this.getDefaultMapper());
}
/**
* @return ObjectContentManager of the Bean
*/
public ObjectContentManager getOcm() throws Exception{
return ocm;
}
/**
* Construct the Bean according to the extended class
* This will be also construct the ObjectContentManager nammed ocm with the param Mapper given
* @param session from "javax.jcr.Session" attached to the Bean
* @param map from "org.apache.jackrabbit.ocm.mapper.Mapper" which
* is the use to map entity between apllication and The repository
* @return ObjectContentManager of the Bean
*/
public ObjectContentManager getOcm(Session session, Mapper map) throws Exception{
return new ObjectContentManagerImpl(session, map);
}
public void setOcm(ObjectContentManager ocm) {
this.ocm = ocm;
}
private Mapper getDefaultMapper(){
ReflectionUtils.setClassLoader(com.ged.ocm.entity.Groupe.class.getClassLoader());
List<Class> classes = new ArrayList<Class>();
classes.add(com.ged.ocm.entity.Fichier.class);
classes.add(com.ged.ocm.entity.Dossier.class);
classes.add(com.ged.ocm.entity.Groupe.class);
classes.add(com.ged.ocm.entity.SimpleNode.class);
return new AnnotationMapperImpl(classes);
}
public Mapper getMapper() {
return mapper;
}
public void setMapper(Mapper mapper) {
this.mapper = mapper;
}
public void setLoader(Class classe){
ReflectionUtils.setClassLoader(classe.getClassLoader());
}
public void create(T entity) {
ocm.insert(entity);
ocm.save();
}
public void edit(T entity) {
ocm.update(entity);
ocm.save();
}
public void remove(T entity) {
ocm.remove(entity);
ocm.save();
}
public void refresh(){
ocm.refresh(true);
ocm.save();
}
public void copy(String orgPath, String destPath){
ocm.copy(orgPath, destPath);
ocm.save();
}
public void move(String orgPath, String destPath){
ocm.move(orgPath, destPath);
ocm.save();
}
public void removeByPath(String path) {
ocm.remove(path);
ocm.save();
}
public void removeAllByEqual(Map<String,String> filters){
QueryManager queryManager = ocm.getQueryManager();
Filter filter;
filter = queryManager.createFilter(entityClass);
for (String key : filters.keySet())filter.addEqualTo(key, filters.get(key));
Query query = queryManager.createQuery(filter);
ocm.remove(query);
ocm.save();
}
public void removeAllByEqual(String nodePath,Map<String,String> filters){
QueryManager queryManager = ocm.getQueryManager();
Filter filter;
filter = queryManager.createFilter(entityClass);
filter.setScope(nodePath);
for (String key : filters.keySet())filter.addEqualTo(key, filters.get(key));
Query query = queryManager.createQuery(filter);
ocm.remove(query);
ocm.save();
}
public boolean isPathExist(String path){
return ocm.objectExists(path);
}
public T findByPath(String path) {
try {
return (T)ocm.getObject(path);
} catch (Exception e) {
return null;
}
}
public T findOneByEqual(Map<String,String> filters){
QueryManager queryManager = ocm.getQueryManager();
Filter filter;
filter = queryManager.createFilter(entityClass);
for (String key : filters.keySet())filter.addEqualTo(key, filters.get(key));
Query query = queryManager.createQuery(filter);
List<T> results = (List<T>) ocm.getObjects(query);
T result = null;
try {
result = results.get(0);
} catch (Exception e) {
}
return result;
}
public List<T> findAllByEqual(Map<String,String> filters){
QueryManager queryManager = ocm.getQueryManager();
Filter filter;
filter = queryManager.createFilter(entityClass);
filter.setScope("//");
for (String key : filters.keySet())filter.addEqualTo(key, filters.get(key));
Query query = queryManager.createQuery(filter);
List<T> results = (List<T>) ocm.getObjects(query);
return results;
}
public List<T> findAllByLike(Map<String,String> filters){
QueryManager queryManager = ocm.getQueryManager();
Filter filter;
filter = queryManager.createFilter(entityClass);
filter.setScope("//");
for (String key : filters.keySet())filter.addLike(key, filters.get(key));
Query query = queryManager.createQuery(filter);
List<T> results = (List<T>) ocm.getObjects(query);
return results;
}
public List<T> findAllByLikeScoped(String scope,Map<String,String> filters){
QueryManager queryManager = ocm.getQueryManager();
Filter filter;
filter = queryManager.createFilter(entityClass);
filter.setScope(scope);
for (String key : filters.keySet())filter.addLike(key, filters.get(key));
Query query = queryManager.createQuery(filter);
List<T> results = (List<T>) ocm.getObjects(query);
return results;
}
public List<T> findAllByOrLike(String attr,String[] val){
QueryManager queryManager = ocm.getQueryManager();
Filter filter;
filter = queryManager.createFilter(entityClass);
filter.setScope("//");
filter.addOrFilter(attr, val);
Query query = queryManager.createQuery(filter);
List<T> results = (List<T>) ocm.getObjects(query);
return results;
}
public T findOneByEqual(String nodePath, Map<String,String> filters){
QueryManager queryManager = ocm.getQueryManager();
Filter filter;
filter = queryManager.createFilter(entityClass);
filter.setScope(nodePath);
for (String key : filters.keySet())filter.addEqualTo(key, filters.get(key));
Query query = queryManager.createQuery(filter);
List<T> results = (List<T>) ocm.getObjects(query);
T result = results.get(0);
return result;
}
public List<T> findAllByEqual(String nodePath, Map<String,String> filters){
QueryManager queryManager = ocm.getQueryManager();
Filter filter;
filter = queryManager.createFilter(entityClass);
filter.setScope(nodePath);
for (String key : filters.keySet())filter.addEqualTo(key, filters.get(key));
Query query = queryManager.createQuery(filter);
List<T> results = (List<T>) ocm.getObjects(query);
return results;
}
public List<T> findAllByString(String query){
List<T> results = (List<T>) ocm.getObjects(query,javax.jcr.query.Query.JCR_SQL2);
return results;
}
public List<T> findAllByParentPath(String nodePath){
QueryManager queryManager = ocm.getQueryManager();
Filter filter;
filter = queryManager.createFilter(entityClass);
filter.setScope(nodePath);
Query query = queryManager.createQuery(filter);
List<T> results = (List<T>) ocm.getObjects(query);
return results;
}
public List<T> findAllByParentPathOrder(String nodePath, String ordering){
QueryManager queryManager = ocm.getQueryManager();
Filter filter;
filter = queryManager.createFilter(entityClass);
filter.setScope(nodePath);
Query query = queryManager.createQuery(filter);
// query.addOrderByDescending(ordering);
query.addOrderByAscending(ordering);
List<T> results = (List<T>) ocm.getObjects(query);
return results;
}
public int coutChild(String nodePath){
QueryManager queryManager = ocm.getQueryManager();
Filter filter;
filter = queryManager.createFilter(entityClass);
filter.setScope(nodePath);
Query query = queryManager.createQuery(filter);
List<T> results = (List<T>) ocm.getObjects(query);
return results.size();
}
public boolean ifExistByPath(String path){
return ocm.objectExists(path);
}
public String getParentPath(String path){
String parent="";
String[] tmp=path.split("/");
for (int i = 1; i < (tmp.length-1); i++) {
parent+="/"+tmp[i];
}
return parent;
}
}
创建bean
Create the bean
import javax.ejb.Stateless;
import com.ged.ocm.entity.Fichier;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Session;
import javax.jcr.Workspace;
import javax.jcr.query.QueryResult;
import javax.jcr.query.qom.FullTextSearch;
import javax.jcr.query.qom.StaticOperand;
import org.apache.jackrabbit.ocm.query.Filter;
import org.apache.jackrabbit.ocm.query.Query;
import org.apache.jackrabbit.ocm.query.QueryManager;
@Stateless
public class FichierBean extends AbstractBean<Fichier>{
public FichierBean() {
super(Fichier.class);
}
public FichierBean(Session session) {
super(Fichier.class,session);
}
public List<Fichier> findAllByContains(String motCles) throws Exception {
String requette = "SELECT * FROM FileType AS Res WHERE CONTAINS (Res.*, '*"+motCles+"*')";
List<Fichier> results = (List<Fichier>) this.getOcm().getObjects(requette, javax.jcr.query.Query.JCR_SQL2);
return results;
}
public List<Fichier> findAllByContains(String path,String motCles) throws Exception {
String requette = "SELECT * FROM FileType AS Res WHERE CONTAINS (Res.*, '*"+motCles+"*') ORDER BY Res.nom";
List<Fichier> tmp = (List<Fichier>) this.getOcm().getObjects(requette, javax.jcr.query.Query.JCR_SQL2);
List<Fichier> results = new ArrayList<Fichier>();
for (Fichier fichier : tmp) {
if(fichier.getPath().startsWith(path))results.add(fichier);
}
return results;
}
public List<Fichier> fulltextByOCM(String motCles) throws Exception {
QueryManager queryManager = this.getOcm().getQueryManager();
Filter filter;
filter = queryManager.createFilter(com.ged.ocm.entity.Fichier.class);
filter.addContains(".", "*"+motCles+"*");
Query query = queryManager.createQuery(filter);
List<Fichier> results = (List<Fichier>) this.getOcm().getObjects(query);
return results;
}
}
我的配置文件:
-
repository.xml
repository.xml
<?xml version="1.0"?>
<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.6//EN"
"http://jackrabbit.apache.org/dtd/repository-1.6.dtd">
<Repository>
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/repository"/>
</FileSystem>
-->
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"/>
<param name="url" value="jdbc:mysql://:3306/db_ged_mysql" />
<param name="user" value="root" />
<param name="password" value="root" />
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="J_R_FS_"/>
</FileSystem>
<!--
security configuration
-->
<Security appName="Jackrabbit">
<AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager" />
<LoginModule class="org.apache.jackrabbit.core.security.SimpleLoginModule">
<param name="anonymousId" value="anonymous" />
</LoginModule>
</Security>
<!--
location of workspaces root directory and name of default workspace
-->
<Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
<!--
workspace configuration template:
used to create the initial workspace if there's no workspace yet
-->
<Workspace name="${wsp.name}">
<PersistenceManager class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
<param name="driver" value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"/>
<param name="url" value="jdbc:mysql://:3306/db_ged_mysql" />
<param name="user" value="root" />
<param name="password" value="root" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix" value="J_PM_${wsp.name}_" />
<param name="externalBLOBs" value="false" />
</PersistenceManager>
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"/>
<param name="url" value="jdbc:mysql://:3306/db_ged_mysql" />
<param name="user" value="root" />
<param name="password" value="root" />
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="J_FS_${wsp.name}_"/>
</FileSystem>
<!--
Search index and the file system it uses.
class: FQN of class implementing the QueryHandler interface
-->
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${rep.home}/workspaces/${wsp.name}/index"/>
<param name="tikaConfigPath" value="${rep.home}/tika-config.xml"/>
<param name="useCompoundFile" value="true"/>
<param name="minMergeDocs" value="100"/>
<param name="volatileIdleTime" value="3"/>
<param name="maxMergeDocs" value="2147483647"/>
<param name="mergeFactor" value="10"/>
<param name="maxFieldLength" value="10000"/>
<param name="bufferSize" value="10"/>
<param name="cacheSize" value="1000"/>
<param name="forceConsistencyCheck" value="false"/>
<param name="enableConsistencyCheck" value="false"/>
<param name="autoRepair" value="true"/>
<param name="analyzer" value="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
<param name="queryClass" value="org.apache.jackrabbit.core.query.QueryImpl"/>
<param name="respectDocumentOrder" value="true"/>
<param name="resultFetchSize" value="2147483647"/>
<param name="extractorPoolSize" value="0"/>
<param name="extractorTimeout" value="100"/>
<param name="extractorBackLogSize" value="100"/>
<param name="supportHighlighting" value="true"/>
<param name="excerptProviderClass" value="org.apache.jackrabbit.core.query.lucene.DefaultXMLExcerpt"/>
</SearchIndex>
</Workspace>
<!--
Configures the versioning
-->
<Versioning rootPath="${rep.home}/version">
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"/>
<param name="url" value="jdbc:mysql://:3306/db_ged_mysql" />
<param name="user" value="root" />
<param name="password" value="root" />
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="J_V_FS_"/>
</FileSystem>
<PersistenceManager class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
<param name="driver" value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"/>
<param name="url" value="jdbc:mysql://:3306/db_ged_mysql" />
<param name="user" value="root" />
<param name="password" value="root" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix" value="J_V_PM_" />
<param name="externalBLOBs" value="false" />
</PersistenceManager>
</Versioning>
<!--
Search index for content that is shared repository wide
(/jcr:system tree, contains mainly versions)
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${rep.home}/repository/index"/>
<param name="extractorPoolSize" value="2"/>
<param name="supportHighlighting" value="true"/>
</SearchIndex>
-->
<!--
Cluster configuration with system variables.
-->
<RepositoryLockMechanism class="org.apache.jackrabbit.core.util.CooperativeFileLock" />
</Repository>
tika-config.xml
tika-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<mimeTypeRepository resource="/org/apache/tika/mime/tika-mimetypes.xml" magic="false"/>
<parsers>
<parser name="parse-dcxml" class="org.apache.tika.parser.xml.DcXMLParser">
<mime>application/xml</mime>
<mime>image/svg+xml</mime>
</parser>
<parser name="parse-office" class="org.apache.tika.parser.microsoft.OfficeParser">
<mime>application/x-tika-msoffice</mime>
<mime>application/msword</mime>
<mime>application/vnd.ms-excel</mime>
<mime>application/vnd.ms-excel.sheet.binary.macroenabled.12</mime>
<mime>application/vnd.ms-powerpoint</mime>
<mime>application/vnd.visio</mime>
<mime>application/vnd.ms-outlook</mime>
</parser>
<parser name="parse-ooxml" class="org.apache.tika.parser.microsoft.ooxml.OOXMLParser">
<mime>application/x-tika-ooxml</mime>
<mime>application/vnd.openxmlformats-package.core-properties+xml</mime>
<mime>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime>
<mime>application/vnd.openxmlformats-officedocument.spreadsheetml.template</mime>
<mime>application/vnd.ms-excel.sheet.macroenabled.12</mime>
<mime>application/vnd.ms-excel.template.macroenabled.12</mime>
<mime>application/vnd.ms-excel.addin.macroenabled.12</mime>
<mime>application/vnd.openxmlformats-officedocument.presentationml.presentation</mime>
<mime>application/vnd.openxmlformats-officedocument.presentationml.template</mime>
<mime>application/vnd.openxmlformats-officedocument.presentationml.slideshow</mime>
<mime>application/vnd.ms-powerpoint.presentation.macroenabled.12</mime>
<mime>application/vnd.ms-powerpoint.slideshow.macroenabled.12</mime>
<mime>application/vnd.ms-powerpoint.addin.macroenabled.12</mime>
<mime>application/vnd.openxmlformats-officedocument.wordprocessingml.document</mime>
<mime>application/vnd.openxmlformats-officedocument.wordprocessingml.template</mime>
<mime>application/vnd.ms-word.document.macroenabled.12</mime>
<mime>application/vnd.ms-word.template.macroenabled.12</mime>
</parser>
<parser name="parse-html" class="org.apache.tika.parser.html.HtmlParser">
<mime>text/html</mime>
<mime>application/xhtml+xml</mime>
<mime>application/x-asp</mime>
</parser>
<parser mame="parse-rtf" class="org.apache.tika.parser.rtf.RTFParser">
<mime>application/rtf</mime>
</parser>
<parser name="parse-pdf" class="org.apache.tika.parser.pdf.PDFParser">
<mime>application/pdf</mime>
</parser>
<parser name="parse-txt" class="org.apache.tika.parser.txt.TXTParser">
<mime>text/plain</mime>
</parser>
<parser name="parse-openoffice" class="org.apache.tika.parser.opendocument.OpenOfficeParser">
<mime>application/vnd.sun.xml.writer</mime>
<mime>application/vnd.oasis.opendocument.text</mime>
<mime>application/vnd.oasis.opendocument.graphics</mime>
<mime>application/vnd.oasis.opendocument.presentation</mime>
<mime>application/vnd.oasis.opendocument.spreadsheet</mime>
<mime>application/vnd.oasis.opendocument.chart</mime>
<mime>application/vnd.oasis.opendocument.image</mime>
<mime>application/vnd.oasis.opendocument.formula</mime>
<mime>application/vnd.oasis.opendocument.text-master</mime>
<mime>application/vnd.oasis.opendocument.text-web</mime>
<mime>application/vnd.oasis.opendocument.text-template</mime>
<mime>application/vnd.oasis.opendocument.graphics-template</mime>
<mime>application/vnd.oasis.opendocument.presentation-template</mime>
<mime>application/vnd.oasis.opendocument.spreadsheet-template</mime>
<mime>application/vnd.oasis.opendocument.chart-template</mime>
<mime>application/vnd.oasis.opendocument.image-template</mime>
<mime>application/vnd.oasis.opendocument.formula-template</mime>
<mime>application/x-vnd.oasis.opendocument.text</mime>
<mime>application/x-vnd.oasis.opendocument.graphics</mime>
<mime>application/x-vnd.oasis.opendocument.presentation</mime>
<mime>application/x-vnd.oasis.opendocument.spreadsheet</mime>
<mime>application/x-vnd.oasis.opendocument.chart</mime>
<mime>application/x-vnd.oasis.opendocument.image</mime>
<mime>application/x-vnd.oasis.opendocument.formula</mime>
<mime>application/x-vnd.oasis.opendocument.text-master</mime>
<mime>application/x-vnd.oasis.opendocument.text-web</mime>
<mime>application/x-vnd.oasis.opendocument.text-template</mime>
<mime>application/x-vnd.oasis.opendocument.graphics-template</mime>
<mime>application/x-vnd.oasis.opendocument.presentation-template</mime>
<mime>application/x-vnd.oasis.opendocument.spreadsheet-template</mime>
<mime>application/x-vnd.oasis.opendocument.chart-template</mime>
<mime>application/x-vnd.oasis.opendocument.image-template</mime>
<mime>application/x-vnd.oasis.opendocument.formula-template</mime>
</parser>
<parser name="parse-image" class="org.apache.tika.parser.image.ImageParser">
<mime>image/bmp</mime>
<mime>image/gif</mime>
<mime>image/jpeg</mime>
<mime>image/png</mime>
<mime>image/tiff</mime>
<mime>image/vnd.wap.wbmp</mime>
<mime>image/x-icon</mime>
<mime>image/x-psd</mime>
<mime>image/x-xcf</mime>
</parser>
<parser name="parse-class" class="org.apache.tika.parser.asm.ClassParser">
<mime>application/x-tika-java-class</mime>
</parser>
<parser name="parse-mp3" class="org.apache.tika.parser.mp3.Mp3Parser">
<mime>audio/mpeg</mime>
</parser>
<parser name="parse-midi" class="org.apache.tika.parser.audio.MidiParser">
<mime>application/x-midi</mime>
<mime>audio/midi</mime>
</parser>
<parser name="parse-audio" class="org.apache.tika.parser.audio.AudioParser">
<mime>audio/basic</mime>
<mime>audio/x-wav</mime>
<mime>audio/x-aiff</mime>
</parser>
</parsers>
</properties>
All query from the bean work except when I call the function public List<Fichier> findAllByContains(String path,String motCles)
to fulltext search into .docx and .xslx document. Fulltext search on .pdf, .txt, .xml, .xls, .doc, ... work perfectly.
All query from the bean work except when I call the function public List<Fichier> findAllByContains(String path,String motCles)
to fulltext search into .docx and .xslx document. Fulltext search on .pdf, .txt, .xml, .xls, .doc, ... work perfectly.
推荐答案
The solution is focused on JARs of the jackrabbit-jca-2.7.5.rar!
The solution is focused on JARs of the jackrabbit-jca-2.7.5.rar!
There are errors on dependency so I make these change :
There are errors on dependency so I make these change :
- add apache-mime4j-0.6.jar
- add apache-mime4j-core-0.7.jar
- add commons-compress-1.5.jar
Add these JARs in the jackrabbit-jca-2.7.5.rar before deploying this!
Add these JARs in the jackrabbit-jca-2.7.5.rar before deploying this!
And the indexation of .docx, .xlsx, ... wors succesfully!
And the indexation of .docx, .xlsx, ... wors succesfully!
Thank you for @Ashok Felix
Thank you for @Ashok Felix
这篇关于Apache Jackrabbit JCA 2.7.5 .docx和.xlsx索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!