我正在使用这样的查询:
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/