RavenDB索引中的重音或特殊字符

时间:2018-05-17 09:11:13

标签: indexing ravendb

我的收藏中有几个字段包含重音字符,而且这些字词来自各种语言:捷克语,德语,西班牙语,芬兰语,匈牙利语等。 我注意到,在搜​​索时,例如“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

3 个答案:

答案 0 :(得分:1)

您需要指定您想要建议的字段 在索引定义中添加: Suggestion(x => x.NAME_1);

答案 1 :(得分:0)

您需要验证索引中的“全文搜索”和“建议”选项是否已“启用”。

答案 2 :(得分:0)

在执行搜索操作的属性上,索引定义中不得包含以下代码行:

Indexes.Add(x => x.PropertyXYZ, FieldIndexing.No);

默认情况下,如果您未更改索引,则查询将起作用。