Как уже указала Пейдж Кук, вы уже нашли соответствующую документацию , но, поскольку не каждый пользователь Solr знает Java, я решил создать свой собственный ответ с более подробной информацией.
Первый шаг - добавить фильтр к определению вашего поля:
<fieldType>
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<!-- BEGIN OF IMPORTANT PART -->
<filter class="solr.CollationKeyFilterFactory"
custom="customRules.bin"
strength="primary"
/>
<!-- END OF IMPORTANT PART -->
</analyzer>
</fieldType>
Следующим шагом является создание необходимого customRules.bin
файла:
Вы должны создать крошечную Java-программу, чтобы следовать документации. К сожалению, для не Java-программистов это немного сложно, так как фрагмент кода показывает только важные части. Также он использует стороннюю библиотеку, не распространяемую с JDK (Apache Commons IO)
Вот полный Java 7 код, необходимый для написания customRules.bin
без использования внешних библиотек:
import java.io.*;
import java.text.*;
import java.util.*;
public class RulesWriter {
public static void main(String[] args) throws Exception {
RuleBasedCollator baseCollator = (RuleBasedCollator)
Collator.getInstance(new Locale("de", "DE"));
String DIN5007_2_tailorings =
"& ae , a\u0308 & AE , A\u0308"+
"& oe , o\u0308 & OE , O\u0308"+
"& ue , u\u0308 & UE , u\u0308";
RuleBasedCollator tailoredCollator = new RuleBasedCollator(
baseCollator.getRules() + DIN5007_2_tailorings);
String tailoredRules = tailoredCollator.getRules();
Writer fw = new OutputStreamWriter(
new FileOutputStream("c:/customRules.dat"), "UTF-8");
fw.write(tailoredRules);
fw.flush();
fw.close();
}
}
Отказ от ответственности: Приведенный выше код компилируется и создает файл customRules.bin
, но я фактически не проверял созданный файл с помощью Solr.