diff --git a/README.md b/README.md index 99c8554b6a10fea8a19e764a0cb438f19862b51f..7d8adc9dd2bf0cc83b8a09f1a3d688c9b8fade7d 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,14 @@ This application was created by Eike Cochu for his master's degree thesis in com ## Installation +1. If MongoDB or ElasticSearch run on different servers that the JavaEE application server, then the configuration files need to be changed. Change `config.properties` file + 1. in `vipra.war`: Open `vipra.war` in an archive program, navigate to `/WEB-INF/classes` and edit `config.properties` file appropriately. + 2. in `vipra-cmd.jar`: Open `vipra-cmd.jar` and edit `config.properties` file appropriately. + 3. Test connection by running `./vipra -t` +2. Copy `vipra.war` to your JavaEE application server + +## Development + ### Requirements Run dependencies @@ -29,7 +37,7 @@ Additional build dependencies * [Gulp (3.9+)](http://gulpjs.com/) * [Bower (1.7+](http://bower.io/) -### Installation +### Build 1. Clone this repository to `./vipra` 2. Navigate to `./vipra` diff --git a/vipra-backend/src/main/resources/config.properties b/vipra-backend/src/main/resources/config.properties index 07030840d45dd8fed8c2c2d5bff5fe0a54939a4f..61bfe4a9fb5a057b497c5947af9db341ff191c81 100644 --- a/vipra-backend/src/main/resources/config.properties +++ b/vipra-backend/src/main/resources/config.properties @@ -1,3 +1,8 @@ db.host=localhost db.port=27017 -db.name=test \ No newline at end of file +db.name=test +es.host=localhost +es.port=9300 +tm.processor=corenlp +tm.analyzer=jgibb +tm.dtmpath=/home/eike/repos/master/dtm_release/dtm/main \ No newline at end of file diff --git a/vipra-cmd/runcfg/CMD - Indexing.launch b/vipra-cmd/runcfg/CMD - Indexing.launch new file mode 100644 index 0000000000000000000000000000000000000000..801f3d3546cf52797d7c339394cd34819902ec59 --- /dev/null +++ b/vipra-cmd/runcfg/CMD - Indexing.launch @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/vipra-cmd/src/main/java/de/vipra/cmd/Main.java"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="1"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> +<listEntry value="org.eclipse.debug.ui.launchGroup.run"/> +</listAttribute> +<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="de.vipra.cmd.Main"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-e"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="vipra-cmd"/> +<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dlog4j.configurationFile=log4j2dev.xml"/> +</launchConfiguration> diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/lda/JGibbAnalyzer.java b/vipra-cmd/src/main/java/de/vipra/cmd/lda/JGibbAnalyzer.java index 3af056a2d683fd06fb27bc17b88c84b5923bf60d..fb8a117e8cc64af114d541694d45792ebfd5baaf 100644 --- a/vipra-cmd/src/main/java/de/vipra/cmd/lda/JGibbAnalyzer.java +++ b/vipra-cmd/src/main/java/de/vipra/cmd/lda/JGibbAnalyzer.java @@ -107,21 +107,24 @@ public class JGibbAnalyzer extends Analyzer { List<TopicFull> newTopics = new ArrayList<>(options.K); Map<Integer, Topic> newTopicsMap = new HashMap<>(options.K); - // for each topic - for (int topicNum = 0; topicNum < options.K; topicNum++) { - TopicFull newTopic = new TopicFull(); - List<TopicWord> topicWords = new ArrayList<>(options.twords); - - // for each word - for (int wordNum = 0, lineNum = topicNum * options.K + 1; wordNum < options.twords; wordNum++, lineNum++) { - String[] parts = lines.get(lineNum).trim().split("\\s+"); - TopicWord topicWord = new TopicWord(new Word(parts[0]), Double.parseDouble(parts[1])); - topicWords.add(topicWord); + TopicFull newTopic = null; + List<TopicWord> topicWords = null; + int topicNum = 0; + + // for each line + for (String line : lines) { + if (!line.startsWith("\t")) { + newTopic = new TopicFull(); + topicWords = new ArrayList<>(); + newTopic.setWords(topicWords); + newTopics.add(newTopic); + newTopicsMap.put(topicNum++, new Topic(newTopic.getId())); + continue; } - newTopic.setWords(topicWords); - newTopics.add(newTopic); - newTopicsMap.put(topicNum, new Topic(newTopic.getId())); + String[] parts = line.trim().split("\\s+"); + TopicWord topicWord = new TopicWord(new Word(parts[0]), Double.parseDouble(parts[1])); + topicWords.add(topicWord); } dbTopics.drop(); diff --git a/vipra-cmd/src/main/resources/config.properties b/vipra-cmd/src/main/resources/config.properties index 01b9444d6837e0520e7f4edf60af96e78bb7c300..61bfe4a9fb5a057b497c5947af9db341ff191c81 100644 --- a/vipra-cmd/src/main/resources/config.properties +++ b/vipra-cmd/src/main/resources/config.properties @@ -1,6 +1,8 @@ db.host=localhost db.port=27017 db.name=test +es.host=localhost +es.port=9300 tm.processor=corenlp tm.analyzer=jgibb tm.dtmpath=/home/eike/repos/master/dtm_release/dtm/main \ No newline at end of file diff --git a/vipra-util/src/main/java/de/vipra/util/Config.java b/vipra-util/src/main/java/de/vipra/util/Config.java index b4b680adfb2dd9c2511e5380caceb075ea59f2f4..0b1244d23fb8326d2feaa7114b3c595af356d3b3 100644 --- a/vipra-util/src/main/java/de/vipra/util/Config.java +++ b/vipra-util/src/main/java/de/vipra/util/Config.java @@ -51,6 +51,18 @@ public class Config { @ConfigKey("db.name") public String databaseName = Constants.DATABASE_NAME; + /** + * ElasticSearch host + */ + @ConfigKey("es.host") + public String elasticsearchHost = Constants.ES_HOST; + + /** + * ElasticSearch connection port + */ + @ConfigKey("es.port") + public int elasticsearchPort = Constants.ES_PORT; + /** * The text processor to be used. To find a list of available values, * {@link de.vipra.util.Constants.Processor}. diff --git a/vipra-util/src/main/java/de/vipra/util/ESClient.java b/vipra-util/src/main/java/de/vipra/util/ESClient.java index e496048e80dad47bf2a5d72af922d0dbaadb0faa..e58d0dcd13f05ceb6b2ed3d7b119092d39fa5a62 100644 --- a/vipra-util/src/main/java/de/vipra/util/ESClient.java +++ b/vipra-util/src/main/java/de/vipra/util/ESClient.java @@ -23,8 +23,8 @@ public abstract class ESClient { */ public static TransportClient getClient(Config config) throws UnknownHostException { if (client == null) { - client = TransportClient.builder().build().addTransportAddress( - new InetSocketTransportAddress(InetAddress.getByName(Constants.ES_HOST), Constants.ES_PORT)); + client = TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress( + InetAddress.getByName(config.elasticsearchHost), config.elasticsearchPort)); } return client; } diff --git a/vipra-util/src/main/java/de/vipra/util/service/MongoService.java b/vipra-util/src/main/java/de/vipra/util/service/MongoService.java index c975d865029b23dcf1eced9520887bed77c5f0d9..e0e2a7107cf9d1c80a698f1b294ef7dc5a648aa3 100644 --- a/vipra-util/src/main/java/de/vipra/util/service/MongoService.java +++ b/vipra-util/src/main/java/de/vipra/util/service/MongoService.java @@ -41,7 +41,8 @@ public class MongoService<Type extends Model<IdType>, IdType> implements Service field.setAccessible(true); UpdateIgnore ui = field.getDeclaredAnnotation(UpdateIgnore.class); - this.updateFields.put(field.getName(), ui == null ? null : field); + if (ui == null) + this.updateFields.put(field.getName(), field); QueryIgnore qi = field.getDeclaredAnnotation(QueryIgnore.class); if (qi != null) { @@ -183,6 +184,7 @@ public class MongoService<Type extends Model<IdType>, IdType> implements Service } else { Query<Type> query = datastore.createQuery(clazz).field("_id").equal(t.getId()); UpdateOperations<Type> ops = datastore.createUpdateOperations(clazz); + boolean noChanges = true; for (String fieldName : fields) { if (!this.updateFields.containsKey(fieldName)) throw new DatabaseException("field unknown: " + fieldName); @@ -195,11 +197,13 @@ public class MongoService<Type extends Model<IdType>, IdType> implements Service ops.unset(fieldName); else ops.set(fieldName, value); + noChanges = false; } catch (IllegalArgumentException | IllegalAccessException e) { throw new DatabaseException(e); } } - datastore.update(query, ops); + if (!noChanges) + datastore.update(query, ops); } }