寻找变形金刚(öäüß)也很有效.
问题是:
我从80年代后期收到了一些存档文本,大多数计算机/软件都不支持ASCII,特别是没有支持德语的变音符号.
为此,使用了另一种表示法:
ae instead of äoe instead of öue instead of üss instead of ß
这意味着,米勒这个名字被保存为穆勒.
回到Solr,我现在需要找到包含ue的文档 – 即使用户搜索了ü.
示例:如果我想搜索来自Müller的人的所有短信,
Solr必须找到Mueller和Müller的文本
我怎么处理这个?
这是一个适当的功能吗? – > http://wiki.apache.org/solr/UnicodeCollation(如果我完全理解文档,我不确定)
顺便说一下,通过“搜索和替换”来改变源文本不是一个选择:所有都是ö.
解决方法 正如Paige Cook已经指出的那样,你已经找到了 the relevant documentation,但由于不是每个Solr用户都知道Java,我决定用更多细节创建我自己的答案.第一步是将过滤器添加到字段定义中:
<fIEldType> <analyzer> <tokenizer /> <!-- BEGIN OF important PART --> <filter custom="customrules.bin" strength="primary" /> <!-- END OF important PART --> </analyzer></fIEldType>
下一步是创建必要的customrules.bin文件:
您必须创建一个小型Java程序才能遵循文档.不幸的是,对于非Java程序员来说,这有点困难,因为代码片段只显示了重要的部分.它还使用不与JDK一起分发的第三方库(Apache Commons IO)
下面是在不使用外部库的情况下编写customrules.bin所需的完整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.bin文件,但我实际上并没有使用Solr测试创建的文件.
总结以上是内存溢出为你收集整理的Solr字母转换/变音符号支持全部内容,希望文章能够帮你解决Solr字母转换/变音符号支持所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)