我的收藏中有几个字段包含重音字符,而且这些字词来自各种语言:捷克语,德语,西班牙语,芬兰语,匈牙利语等。 我注意到,在搜索时,例如“Andalucía”(请注意重音的i),查询显示为空 - 但是,搜索“Andaluc *”会返回我要查找的内容。 我在RavenDB文档中找到http://datatables.net/tn/4,并想询问是否将字段索引方法从 default 更改为 exact 可以解决我的问题。
谢谢!
编辑:RavenDB似乎在AND之后删除字母,包括搜索中的重音字符。在cmd窗口中,我可以看到查询(我从{RavenDB Studio输入NAME_1:Andalucía
)(...)/ByName?term=Andaluc&field=NAME_1&max(...)
当我导航到索引的条款时,我可以看到“andalucía”(小写!!)。索引定义只是一个“select new { NAME_1 = area.NAME_1 }
”。忘了提到我还在使用RavenDB 3.5。
索引定义:
Map = areas => from area in areas
select new
{
NAME_0 = area.NAME_0,
NAME_1 = area.NAME_1
};
Indexes.Add(x => x.NAME_1, FieldIndexing.Analyzed);
//Analyzers.Add(x => x.NAME_1, typeof(StandardAnalyzer).FullName);
注释掉的行不起作用,因为我的VS2017项目中的StandardAnalyzer类型无法解析。我正在研究如何使用语句获取dll或正确的。
在引号中查询Andalucía会导致向Raven发送“正确的查询”:(...)/ByName?term=Andalucía&field=NAME_1&max=5(...)
- 但不会产生任何结果。
进一步编辑:发现包含在项目中的Lucene dll,使用了StandardAnalyzer als the analyzer - 结果相同(未找到结果)。
在RavenDB 4上,这似乎是固定的。 MEH
答案 0 :(得分:1)
您需要指定您想要建议的字段
在索引定义中添加:
Suggestion(x => x.NAME_1);
答案 1 :(得分:0)
您需要验证索引中的“全文搜索”和“建议”选项是否已“启用”。
答案 2 :(得分:0)
在执行搜索操作的属性上,索引定义中不得包含以下代码行:
Indexes.Add(x => x.PropertyXYZ, FieldIndexing.No);
默认情况下,如果您未更改索引,则查询将起作用。