使用Examine和Lucene.Net查询逗号分隔的ID列表?

使用Examine和Lucene.Net查询逗号分隔的ID列表?,lucene,lucene.net,Lucene,Lucene.net,我正在使用Inspect for Umbraco(构建在Lucene.net之上)进行搜索。我很确定我的问题与Lucene有关 我的一个字段包含逗号分隔的ID列表。如何以正确的方式查询此字段 我有一个值为“64,65”的字段。我尝试使用MultipleCharacterWildcard,它只在查询ID 64时返回结果,而不查询ID 65。SingleCharacterWildcard不返回任何内容,Fuzzy仅在字段中只有一个ID时返回内容。有没有关于如何进行适当搜索的想法?我想我要找的是一个“

我正在使用Inspect for Umbraco(构建在Lucene.net之上)进行搜索。我很确定我的问题与Lucene有关

我的一个字段包含逗号分隔的ID列表。如何以正确的方式查询此字段

我有一个值为“64,65”的字段。我尝试使用MultipleCharacterWildcard,它只在查询ID 64时返回结果,而不查询ID 65。SingleCharacterWildcard不返回任何内容,Fuzzy仅在字段中只有一个ID时返回内容。有没有关于如何进行适当搜索的想法?我想我要找的是一个“包含”查询


这是处理逗号分隔列表字段的正确方法,还是最好将逗号分隔列表拆分为单独的字段?

我当然会将列表拆分为单独的字段。文档中同一字段名可以有多个值,这是表示一组值的一种相当自然的方式:

venue_id: 12345
treatment_id_set: 1234
treatment_id_set: 2345
有了这样的文档,我可以简单地查询“治疗id集: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

为了使用Umbraco-inspect将具有相同键值的重复字段添加到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));
                }

如何使用Umbraco检查设置多个值?