首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Examine和Lucene.Net查询逗号分隔的ID列表?

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

Stack Overflow用户
提问于 2011-02-26 08:27:41
回答 2查看 2.1K关注 0票数 3

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

我的一个字段包含一个逗号分隔的ID列表。如何正确查询该字段?

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-01 01:54:25

我当然会将列表分成不同的字段。在一个文档中,同一字段名可以有多个值,这是表示一组值的一种非常自然的方式:

代码语言:javascript
复制
venue_id: 12345
treatment_id_set: 1234
treatment_id_set: 2345

有了这样的文档,我可以简单地查询"treatment_id_set:1234“来查找支持这种治疗的所有场所。当然,处理的顺序会丢失。如果需要恢复,请在为各个成员编制索引时存储逗号分隔值:

代码语言:javascript
复制
# stored, indexed
venue_id: 12345
# stored, not indexed
treatment_id_list: 1234,2345
# not stored, indexed
treatment_id_set: 1234
treatment_id_set: 2345
票数 4
EN

Stack Overflow用户

发布于 2018-04-10 19:17:23

为了将相同键值的重复字段添加到Lucene中,您需要连接到'Document Writing‘事件。

代码语言:javascript
复制
_index.DocumentWriting += _index_DocumentWriting;

这将公开底层的Lucene文档。

然后可以像这样添加字段:

代码语言:javascript
复制
foreach (var item in someList)
                {
                    e.Document.Add(new Field("fieldName", item, Field.Store.YES, Field.Index.NOT_ANALYZED));
                }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5124183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档