我正在使用Examine for Umbraco (构建在Lucene.net之上)来进行搜索。我很确定我的问题与Lucene有关。
我的一个字段包含一个逗号分隔的ID列表。如何正确查询该字段?
例如:我有一个值为"64,65“的字段。我尝试使用MultipleCharacterWildcard,它只在我查询ID 64时返回结果,而不是ID 65。模糊不返回任何内容,而SingleCharacterWildcard仅在字段中只有一个ID时才返回内容。有没有关于如何进行适当搜索的想法?我想我要找的是一个“包含”的-query。
同样,这是处理逗号分隔列表字段的正确方法,还是将逗号分隔列表拆分成单独的字段更好?
发布于 2011-03-01 01:54:25
我当然会将列表分成不同的字段。在一个文档中,同一字段名可以有多个值,这是表示一组值的一种非常自然的方式:
venue_id: 12345
treatment_id_set: 1234
treatment_id_set: 2345有了这样的文档,我可以简单地查询"treatment_id_set:1234“来查找支持这种治疗的所有场所。当然,处理的顺序会丢失。如果需要恢复,请在为各个成员编制索引时存储逗号分隔值:
# stored, indexed
venue_id: 12345
# stored, not indexed
treatment_id_list: 1234,2345
# not stored, indexed
treatment_id_set: 1234
treatment_id_set: 2345发布于 2018-04-10 19:17:23
为了将相同键值的重复字段添加到Lucene中,您需要连接到'Document Writing‘事件。
_index.DocumentWriting += _index_DocumentWriting;这将公开底层的Lucene文档。
然后可以像这样添加字段:
foreach (var item in someList)
{
e.Document.Add(new Field("fieldName", item, Field.Store.YES, Field.Index.NOT_ANALYZED));
}https://stackoverflow.com/questions/5124183
复制相似问题