【发布时间】:2015-01-15 20:34:40
【问题描述】:
背景
我有一个包含这两个字段的 Lucene 3.6.0 索引(每个字段下方的示例数据):
company
-------
Tesla Car Works
Family Auto Body
codes
-----
CHP-13724 CHP-194561
RPS-204978 RPS-204979 CHP-194567
codes 字段由多个代码字符串组成,例如“CHP-13724”或“RPS-204979”。
问题:我无法在codes 字段中搜索单个代码字符串。 (有关详细信息,请参阅下面的“详细信息”。)
问题
有没有办法成功搜索这些代码之一,最好是使用标准的 Lucene 包而不是 Contrib 包? (如果必须是 Contrib 包,请指向下载链接。)
详情
如果我使用 Luke 搜索字段,并将搜索字段的分析器设置为 StandardAnalyzer(或 WhitespaceAnalyzer,或我尝试过的任何一种),我无法找到单独的“代码”字符串最后得到一个空的结果集。因此,如果我在 Luke 中搜索 'codes:"CHP-194561"' 作为我的查询,我什么也得不到。但是,如果我使用 'company:"Car"' 进行搜索,我可以毫无问题地得到结果。
例外情况:如果我使用通配符搜索记录的以空格分隔的代码列表中的第一个代码,例如代码:RPS-204978*,它会给我预期的行。但是使用第二个代码,例如代码:RPS-204979*,不返回任何内容。
所以:在codes字段中,由于某种原因,它无法找到以空格分隔的字符串,除非它是第一个字符串并且在查询中使用了通配符,但它可以在公司字段中无论在哪里字符串出现,并且不使用通配符。
编辑:codes 字段使用 NOT_ANALYZED 进行索引。 (因此该字段包含一个术语,一个字符串,它由一系列以空格分隔的代码组成。)
【问题讨论】:
-
您使用哪个分析器/标记器来索引代码字段?