【问题标题】:Accented or special characters in RavenDB indexRavenDB 索引中的重音或特殊字符
【发布时间】:2018-05-17 09:11:12
【问题描述】:

我的收藏中有几个字段包含重音字符,这些词的来源语言非常多样:捷克语、德语、西班牙语、芬兰语、匈牙利语等。 我注意到在搜索时,例如“Andalucía”(注意重音 i),查询出现空 - 但是,搜索“Andaluc*”会返回我正在寻找的内容。 我在 RavenDB 文档中找到了this,并想询问将字段索引方法从 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);

注释掉的行不起作用,因为类型 StandardAnalyzer 无法在我的 VS2017 项目中解析。我目前正在研究如何获取 dll 或正确的 using 语句。 在引号中查询 Andalucía 会导致“正确查询”被发送到 Raven:(...)/ByName?term=Andalucía&field=NAME_1&max=5(...) - 但不会产生任何结果。

进一步编辑:找到 Lucene dll,将其包含在项目中,使用 StandardAnalyzer 作为分析器 - 结果相同(未找到结果)。

在 RavenDB 4 上,这似乎已修复。嗯

【问题讨论】:

  • 索引的术语对我来说也是小写的,但对我来说它有效..如果您添加查询和索引定义可能会很有用

标签: indexing ravendb


【解决方案1】:

您需要验证索引中的“全文搜索”和“建议”选项均已“打开”。

【讨论】:

  • 谢谢,我去看看。如果它不是默认行为,那么它不会被打开。
【解决方案2】:

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

【讨论】:

  • 建议无济于事,因为这(很可能)与索引器或分析器有关。即使打开,建议也无法检索相关记录。在录音室里,可点击的链接不会带我去录音。
【解决方案3】:

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

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

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

【讨论】:

  • Embri,我没有从分析中排除任何字段。
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2011-04-03
  • 2011-10-24
  • 2012-01-31
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多