linq - 在 RavenDB 中使用空格键搜索子字符串

标签 linq lucene.net ravendb

我正在使用这样的查询:

var query = "*" + QueryParser.Escape(input) + "*";
session.Query<User, UsersByEmailAndName>().Where(x => x.Email.In(query) || x.DisplayName.In(query));

在简单索引的支持下:

public UsersByEmailAndName()
{
    Map = users => from user in users
                   select new
                          {
                              user.Email,
                              user.DisplayName,
                          };            
}

Here我读过:

"By default, RavenDB uses a custom analyzer called LowerCaseKeywordAnalyzer for all content. (...) The default values for each field are FieldStorage.No in Stores and FieldIndexing.Default in Indexes."

索引包含字段:

DisplayName - "jarek waliszko"Email - "my_email@domain.com"

最后是:

如果query*_email@**ali* 之类的东西,结果很好。但是当我在里面使用空格键时,例如*ek wa*,没有任何返回。为什么以及如何修复它?

顺便说一句:我正在使用 RavenDB - Build #960

最佳答案

将要搜索的字段的“索引”选项更改为“分析”,而不是“默认” 另外,看看这里: http://ayende.com/blog/152833/orders-search-in-ravendb

关于linq - 在 RavenDB 中使用空格键搜索子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12298468/

相关文章:

c# - 就像在 Lambda 表达式和 LINQ 中一样

lucene - 是否可以将自定义元数据添加到 Lucene 字段?

mongodb - 请告知mongoDB中全文搜索的最佳解决方案

c# - 如何使用 RefIdStr 和 RavenDB 扩展 ServiceStack UserAuth

c# - 在 C# 中枚举类属性

c# - LINQ 从一个集合中获取不属于另一个集合的元素

c# - 在 ASP.NET MVC 中的静态字段中使用 Server.MapPath()

ravendb - RavenDB 'Hello World' 教程出现问题

authentication - RavenDB:Windows 用户凭据不足以进行写访问

c# - 如何用空月获得接下来的 12 个月