Skip to content

Commit

Permalink
configurable transliterator
Browse files Browse the repository at this point in the history
  • Loading branch information
kiselev-dv committed Jun 8, 2015
1 parent c2564a1 commit 38b9034
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import java.util.List;
import java.util.Properties;

import me.osm.gazetteer.web.imp.ApacheASCIIFoldTransliterator;

import org.apache.commons.lang3.StringUtils;
import org.restexpress.Format;
import org.restexpress.RestExpress;
Expand Down Expand Up @@ -32,6 +34,7 @@ public class Configuration extends org.restexpress.util.Environment
private int siteMapMapgeSize = 45000;
private List<String> siteMapTypes = Arrays.asList("poipnt");
private int executionQueueSize = 5;
private String transliteratorClass = ApacheASCIIFoldTransliterator.class.getName();

@Override
protected void fillValues(Properties p)
Expand All @@ -52,6 +55,7 @@ protected void fillValues(Properties p)
this.siteMapMapgeSize = Integer.parseInt(p.getProperty("sitemap_page_size", "45000"));
this.siteMapTypes = Arrays.asList(StringUtils.split(p.getProperty("sitemap_types", "poipnt"), " ,;"));
this.executionQueueSize = Integer.parseInt(p.getProperty("execution_queue_size", "5"));
this.transliteratorClass = p.getProperty("transliterator_class", transliteratorClass);
}

public String getDefaultFormat()
Expand Down Expand Up @@ -120,4 +124,8 @@ public List<String> listSiteMapTypes() {
public int getExecutionQueueSize() {
return executionQueueSize;
}

public String getTransliteratorClass() {
return transliteratorClass;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package me.osm.gazetteer.web.imp;

import me.osm.gazetteer.web.utils.TranslitUtil;

public class ApacheASCIIFoldTransliterator implements Transliterator {

@Override
public String transliterate(String input) {
return TranslitUtil.translit(input);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,23 @@ public class Importer extends BackgroundExecutableTask {

private static final GeometryFactory factory = new GeometryFactory();

private Transliterator transliterator = null;

private static class EmptyAddressException extends Exception {
private static final long serialVersionUID = 8178453133841622471L;
}

public Importer(String source, boolean buildingsGeometry) {

String trClass = Main.config().getTransliteratorClass();
try {
this.transliterator = (Transliterator) Class.forName(trClass).newInstance();
}
catch (Exception e) {
log.warn("Couldn't initialize transliterator {}", trClass);
this.transliterator = new ApacheASCIIFoldTransliterator();
}

this.buildingsGeometry = buildingsGeometry;

this.filePath = source;
Expand Down Expand Up @@ -345,7 +356,7 @@ private String addTransliteration(String text) {
StringBuilder sb = new StringBuilder();

for(String term : StringUtils.split(text, Main.config().getQueryAnalyzerSeparators())) {
String translit = TranslitUtil.translit(term);
String translit = transliterator.transliterate(term);
if(!term.equals(translit)) {
sb.append(" ").append(translit);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package me.osm.gazetteer.web.imp;


/**
* Transliterator - provides service for
* romanization, ASCII folding and so on.
*
* */
public interface Transliterator {
public String transliterate(String input);
}

0 comments on commit 38b9034

Please sign in to comment.