2

検索したいのですが、キーボードが英語だとしましょう。しかし、データベースには、トルコ語の文字を含むいくつかのデータがあります。

「イスタンブール」

「イズミル」

キーボードに「 İ 」がないため、クエリでこれら2つのデータを見つけることができません。

それを行うための最良の方法は何ですか?

アップデート:

NodeJSには、トルコ語の文字を英語に変換する次の関数があります。

function convertTurkishToEnglish(trStr){
   return S(trStr)
      .replaceAll('ı', 'i')
      .replaceAll('ö', 'o')
      .replaceAll('ü', 'u')
      .s; 
}

しかし、DB内のデータには適用できません。

4

2 に答える 2

1

Unicodeエスケープシーケンス\u0130を使用して識別できますİ

于 2013-01-22T12:59:06.423 に答える
1

次の 3 つのオプションが思い浮かびます。

  1. テキストの「to English」バージョンを表す追加フィールドを含めるようにデータを拡張します (convertTurkishToEnglishたとえば、関数を使用) (MapReduce 関数を使用して、必要なものを含む新しいテーブルを作成できる場合があります)。
  2. より網羅的な検索オプションについては、ElasticSearch や Solr などの検索エンジンを使用して調査します。
  3. テキストが検索されるたびに文字置換のすべての組み合わせを含めるように、正規表現の複雑さを増やします (実行時にこれらの検索文字列を作成します)。

    db.users.find({"username": { $regex: "\u0130|ian", $options : "i" } })

İ上記のコード スニペットでは、 orを探していiます。他のトルコ語の文字については、これを行う必要があります。(たとえば、「イアン」を探していました)。

于 2013-01-22T13:48:21.783 に答える