Solr とのシノニム マッチングを行う必要があります。
たとえば、スウェーデンでは、通りの名前は通常Foogatan
、gatan が英語で通りの名前であるという形をしています。この通りの名前は、次のように省略して書き出すことができますFoog.
(英語で書いst.
たようstreet
に)
どのように機能するかはよく知っていますが、 beforeまたは beforesynonyms.txt
の文字が含まれていることを確認する同義語を作成する方法がわかりません。gatan
g.
*g.
と一致する同義語が必要*gatan
です。
私はこれをやり遂げました(私が求めているもののラフドラフトとして機能するようです)
public boolean incrementToken() throws IOException {
// See http://solr.pl/en/2012/05/14/developing-your-own-solr-filter/
if (!input.incrementToken()) return false;
String string = charTermAttr.toString();
boolean containsGatan = string.contains("gatan");
boolean containsG = string.contains("g.");
if (containsGatan) {
string = string.replace("gatan", "g.");
char[] newBuffer = string.toCharArray();
charTermAttr.setEmpty();
charTermAttr.copyBuffer(newBuffer, 0, newBuffer.length);
return true;
}
if (containsG) {
string = string.replace("g.", "gatan");
char[] newBuffer = string.toCharArray();
charTermAttr.setEmpty();
charTermAttr.copyBuffer(newBuffer, 0, newBuffer.length);
return true;
}
return false;
}
031-123456
また、私が抱えている同様の問題は、電話番号をと の形式で記述できることです031123456
。031123456 のような電話番号を検索すると、031-123456も見つかるはずです。
Solrでこれを達成するにはどうすればよいですか?