発音区別符号を区別しないようにするために、デフォルトの言語を「none」に設定してテキストインデックスを作成し、次のように$text検索を実行することをお勧めします。
db.Project.createIndex(
{
"WORKER": "text",
"TRABAJADOR": "text"
},
{
"background": false,
"default_language": "none"
}
)
db.Project.find({
"$text": {
"$search": "jesus",
"$caseSensitive": false
}
})
上記のクエリを生成したc#コードは次のとおりです。簡潔にするために、ライブラリMongoDB.Entitiesを使用しています。
using MongoDB.Entities;
using System;
using System.Linq;
namespace StackOverflow
{
public class Program
{
public class Project : Entity
{
public string WORKER { get; set; }
public string TRABAJADOR { get; set; }
}
private static void Main(string[] args)
{
new DB("test");
DB.Index<Project>()
.Key(p => p.WORKER, KeyType.Text)
.Key(p => p.TRABAJADOR, KeyType.Text)
.Option(o => o.DefaultLanguage = "none")
.Option(o => o.Background = false)
.Create();
(new[] {
new Project { WORKER = "JESUS HERNANDEZ DIAZ"},
new Project { TRABAJADOR = "JESÚS HERNÁNDEZ DÍAZ"}
}).Save();
var result = DB.SearchText<Project>("jesus");
Console.WriteLine($"found: {result.Count()}");
Console.Read();
}
}
}