正如 Paige Cook 已经指出的那样,您已经找到了 the relevant documentation,但由于并非每个 Solr 用户都了解 Java,因此我决定创建自己的答案,并提供更多细节。
第一步是将过滤器添加到您的字段定义中:
<fieldType>
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<!-- BEGIN OF IMPORTANT PART -->
<filter class="solr.CollationKeyFilterFactory"
custom="customRules.dat"
strength="primary"
/>
<!-- END OF IMPORTANT PART -->
</analyzer>
</fieldType>
下一步是创建必要的customRules.dat 文件:
您必须创建一个小型 Java 程序才能遵循文档。不幸的是,对于非 Java 程序员来说,这有点困难,因为代码 sn-p 只显示了重要的部分。它还使用了未随 JDK (Apache Commons IO) 分发的第三方库
以下是在不使用外部库的情况下编写 customRules.dat 所需的完整 Java 7 代码:
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.dat 文件,但我并没有实际使用Solr 测试创建的文件。