Solr,Special Chars和Latin to Cyrillic char转换

时间:2011-10-05 14:03:59

标签: search solr multilingual transliteration

我正在尝试使用Solr(或Lucene)设置一个搜索引擎,该搜索引擎可能包含带有特殊字符的拉丁语文本(特殊字符将包括Ö或Ç作为示例)或Cyrilic字符(示例包括Б或б和Жж)。

无论如何,我试图找到一个解决方案,允许我在其中搜索带有这些字符的单词,但是对于没有键盘上的键的用户...

示例是(在这里编写单词,希望不会冒犯任何人):

  • 搜索“book”时会找到“BÖÖK”
  • 搜索XRAY时会找到“ЖRAY”
  • 如果搜索ZRAY,ZHRAY或žray,也会找到
  • “ЖRAY”(有关Cylric音译为拉丁字符的信息,请参阅GOST 16876-71

那么,我应该怎么做呢?我的一些理论是:

  • 允许为每个原始字符串存储多个文本字段,一个在原始形式中,一个在音译的第一个传递中(例如,将Ö转换为O和Ж到ž,但也是X)然后一个在第三种形式(从ž到z或zh) - >意味着我将存储大量数据......
  • 按原样存储在solr中,让Solr做魔术 - >不知道这有多好用......在solr中看不到任何东西来做这个
  • 魔法子弹我还没找到......

有什么想法吗?有人试过这个吗?

2 个答案:

答案 0 :(得分:1)

看一下Solr's Analyzers, Tokenizers, and Token Filters,它会为您提供有关您正在寻找的操作类型的简介。

答案 1 :(得分:1)

您需要在索引和查询文本分析中使用重音过滤器,这会将外国字符转换为英文版

您可以使用ISOLatin1AccentFilterFactory或ASCIIFoldingFilterFactory,具体取决于您使用的Solr版本。

e.g。

 <filter class="solr.ASCIIFoldingFilterFactory" />

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.ISOLatin1AccentFilterFactory
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.ASCIIFoldingFilterFactory

所以 - “BÖÖK”将在Solr中被转换并索引为“book” 这将使用户能够搜索书籍和BÖÖK,并仍然可以取回文件。