4

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

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

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

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

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

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

有任何想法吗?以前有人试过吗?

4

2 回答 2

1

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

根据您使用的 Solr 版本,您可以使用 ISOLatin1AccentFilterFactory 或 ASCIIFoldingFilterFactory。

例如

 <filter class="solr.ASCIIFoldingFilterFactory" />

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

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

于 2011-10-05T14:14:12.160 回答
1

看看Solr 的分析器、标记器和标记过滤器,它们可以很好地介绍您正在寻找的操作类型。

于 2011-10-05T14:08:03.343 回答