0

にいくつかpunycodesありmongoDBます。ユーザーのリクエストに応じて、母国語で検索する必要があります。ユーザーが完全な住所を入力した場合は見つけることができますが、住所の一部を入力した場合は見つけることができません。これは実際のコードではありませんが、次のようなことを行います。

//$punycode = 'xn--tst-qla.de'; //täst.de

$query1 = 'tä';
$query2 = 'täst';

$queryPunicode1 = Heplper::punycodeEncode($query1); //xn--t-0fa
$queryPunicode2 = Heplper::punycodeEncode($query2); //xn--tst-qla.de

$condition1 = ['ref_host' => ['$regex' => queryPunicode1],];
$result1 = CwShow::findAggregateSum($condition1); // false

$condition2 = ['ref_host' => ['$regex' => queryPunicode2],];
$result2 = CwShow::findAggregateSum($condition2); // true

リターン$query1で検索しようとする試み。で見つけるにはどうすればよいですか?$punycodefalse$query1$punycode

4

1 に答える 1

0

データベースに新しいフィールドを追加しました。これは、母国語で保存された URL です。そして、サーバー側で、どのフィールドで検索するかを選択しました

$query = 'tä';
$punycode = Heplper::punycodeEncode($query);
$field = Heplper::isPunycode($punycode) ? 'ref_host_native' : 'ref_host';
$condition = [$field => ['$regex' => $query],];
$result = CwShow::findAggregateSum($condition);
于 2016-06-02T16:29:06.540 に答える