2011-10-05 82 views
2

我試圖建立一個使用Solr(或Lucene)的搜索引擎,它可以同時具有拉丁文和特殊字符的文本,(特殊字符將包括Ö或Ç作爲示例)或Cyrilic chars(例子包括Б或б和Жж)。Solr,特殊字符和拉丁語到Cyrilic字符轉換

無論如何,我試圖找到一個辦法,讓我去尋找與他們這些charicters話,但沒有自己的鍵盤上的鍵誰的用戶...

例子是(使起來的話在這裏,希望不會冒犯任何人):

  • 「書」將尋找「書」
  • 「ЖRAY」會被發現時XRAY
  • 「ЖRAY」搜索時,找到會如果搜索ZRAY,ZHRAY或žray,也可以找到GOST 16876-71有關音譯爲拉丁字母的信息。

那麼,我應該怎麼做呢?一些理論我是:

  • 允許多個文本字段存儲的每一個原始的字符串,一個原始形式,一個音譯(其中,例如,將轉換Ö只是O和Ж的第一遍到ž,但也是X),然後在第三種形式(從ž到z或zh) - >意味着我將存儲大量的數據...
  • 存儲在solr中,讓Solr做魔術 - >不知道如何這會工作......看不到任何的Solr爲此
  • 魔術子彈我還沒有找到...

有什麼想法?任何人之前嘗試過?

回答

1

您需要使用您的索引和查詢文本分析的口音過濾器,這將外文字符轉換爲自己的英語版本

可以使用,這取決於你所使用的Solr的版本ISOLatin1AccentFilterFactory或ASCIIFoldingFilterFactory。

例如

<filter class="solr.ASCIIFoldingFilterFactory" /> 

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

所以 - 「書」 將被轉換並收錄在Solr的 「書」。
這將使用戶能夠搜索,書籍和BÖÖK,並仍然取回文件。