RavenDB:带有.Search()命令的Keword Analyzer

时间:2014-01-28 16:44:27

标签: ravendb

我正在尝试使用Search方法在RavenDB中进行查询,但我遇到了一个问题,因为它完全忽略了KeywordAnalyzer设置。所以在我有......的情况下。

  • 第1项
  • 第2项
  • 第3项

尽管已将名称字段上的分析器设置为KeywordAnalyzer,但尝试搜索“项目1”会拉出所有三个项目,如此...

Map = items => from item in items
               select new Result {
                   Id = item.Id,
                   Name = item.Name
               };

Index(i => i.Name, FieldIndexing.Analyzed);
Analyze(n => n.Name, "KeywordAnalyzer");

此时,我使用这样的索引;

var results = RavenSession
    .Query<Models.Items.Item, Indexes.Item__ByName>()
    .Customize(c => c.WaitForNonStaleResults())
    .Search(n => n.Name, name)
    .ToList();

我的期望是当我搜索“第1项”时,我只会回到“Item 1”。不是所有其他项目。但这似乎并没有听我说。

1 个答案:

答案 0 :(得分:4)

这是因为您有两个相互矛盾的定义:

Index(i => i.Name, FieldIndexing.Analyzed);
Analyze(n => n.Name, "KeywordAnalyzer");

第一个告诉它使用StandardAnalyzer,第二个KeywordAnalyzer。

删除第一行并进行设置。