4

Solr(またはLucene)を使用して検索エンジンをセットアップしようとしています。これは、ラテン語のテキストと特殊文字(特殊文字には例としてÖまたはÇが含まれます)またはキリル文字(例にはБまたはбおよびЖжが含まれます)の両方を持つことができます。 。

とにかく、私はこれらの文字が含まれている単語を検索できるようにするための解決策を見つけようとしていますが、キーボードにキーがないユーザーのために...

例は次のようになります(ここで単語を作成し、うまくいけば誰も怒らせないでしょう):

  • 「本」を検索すると「BÖÖK」が見つかります
  • XRAYを検索すると「ЖRAY」が見つかります
  • 「ЖRAY」は、ZRAY、ZHRAY、またはžrayを検索する場合にも表示されます(CylricからLatin Charへの音訳については、 GOST 16876-71を参照してください)。

だから、私はこれについてどうやって行くべきですか?私が持っているいくつかの理論は次のとおりです。

  • 元の文字列ごとに複数のテキストフィールドを格納できるようにします。1つは元の形式、1つは音訳の最初のパス(たとえば、ÖをOに、Жをžに変換します)、次に1つを3番目の形式(žからzまたはzhへ)->は、大量のデータを保存することを意味します。
  • solrにそのまま保存し、Solrに魔法をかけてもらいます->これがどれだけうまく機能するかわかりません...これを行うためにsolrに何も表示されません
  • まだ見つけていない魔法の弾丸...

何か案は?誰かが以前にこれを試しましたか?

4

2 に答える 2

1

Solrのアナライザー、トークナイザー、およびトークンフィルターを見てください。これらは、探している操作のタイプを紹介するのに役立ちます。

于 2011-10-05T14:08:03.343 に答える
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」として変換および索引付けされます。
これにより、ユーザーは本とBÖÖKの両方を検索しても、ドキュメントを取り戻すことができます。

于 2011-10-05T14:14:12.160 に答える