Apache Ignite.NET SQL不搜索非英文字符

时间:2017-12-07 14:35:53

标签: c# .net-core ignite

使用Apache Ignite .NET 2.3.0 尝试使用Linq扩展(Apache.Ignite.Linq)进行搜索。

配置:

     CacheConfiguration = new[]
     {
         new CacheConfiguration 
         {
             QueryEntities = new []
             {
                  new QueryEntity(typeof(string), typeof(SecuritiesItem))
                  {
                      Fields = new []
                      {
                          new QueryField { Name = "SearchString", FieldType = typeof(string)}
                      }
                  }
             }
         }
     }

SecuritiesItem定义:

public class SecuritiesItem
{
    /* all other fields */

    public string ShortName { get; set; }
    public string SearchString { get; set; }
}

SearchString包含需要在搜索中使用的所有字段的合并数据。像这样:

  

Открытоеакционерноеобщество“Рогаикопыта   “#☢#Systems Open Joint-Stock Company#☢#ОАО   “РиК”#☢#Ssys#☢#335468321#☢#bner#☢#ОАО“РиК”#☢#   系统开放式股份公司#☢#Открытоеакционерное   общество“Рогаикопыта”#☢#Systems   开放式股份公司#☢#RU003572593#☢#1-22-22222-A

像这样搜索:

_securitiesCache
    .AsCacheQueryable()
    .Where(s => s.Value.SearchString.Contains(query))
    // or .Where(s => s.Value.SearchString.ToLower().IndexOf(query) != -1)
    .ToArray()
    .Select(x => x.Value);

所以,如果我搜索“开放” - 它会正常发现。但如果我搜索“Откр”,则没有找到结果。

尝试使用'=='搜索对象中的特定字段,如ShortName,结果相同。我应该将文本转换为特定的编码吗?

SelfResolved

这是邮递员的错。 url编码中的https://github.com/postmanlabs/postman-app-support/issues/2263错误。

1 个答案:

答案 0 :(得分:5)

您可以共享一个示例项目复制器吗?

我更新了几个测试,它们适用于类似的情况。我没有更改编码或将文本转换为某些特定的编码,默认情况下它是UTF-8。