我正在尝试使用Search
方法在RavenDB中进行查询,但我遇到了一个问题,因为它完全忽略了KeywordAnalyzer
设置。所以在我有......的情况下。
尽管已将名称字段上的分析器设置为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
”。不是所有其他项目。但这似乎并没有听我说。
答案 0 :(得分:4)
这是因为您有两个相互矛盾的定义:
Index(i => i.Name, FieldIndexing.Analyzed);
Analyze(n => n.Name, "KeywordAnalyzer");
第一个告诉它使用StandardAnalyzer,第二个KeywordAnalyzer。
删除第一行并进行设置。