0

我的 solr DB 中有 country 字段来代表与此项目相关的国家。国家/地区列表是用 PIPE 分隔的,
例如:
<arr name="country"> <str>France | United Kingdom | Norway | UAE </str> </arr> 和现在这样的另一个项目
<arr name="country"> <str>Australia | Belgium | Argentina </str> </arr>
我需要搜索与英国比利时相关的所有项目我试过这个

http://127.0.0.1:8888/solr/MyDb/select/?q=*:*&version=2.2&start=0&rows=10&indent=on&facet=true&fq=country:United+Kingdom+OR+Belgium

但这没有用!你能指导我如何进行这个搜索吗?
谢谢你的帮助

4

2 回答 2

1

对国家字段@索引和查询时间进行了哪些分析?

会建议 -

索引国家和多值而不是用 | 分隔。使用具有最少分析或字段类型字符串的 fieldType 进行过滤

<field name="country" type="string" indexed="true" stored="true" multiValued="true"/>

过滤器查询应该使用

fq=country:Norway
fq=country:("United Kingdom" OR Belgium)
于 2011-11-17T10:49:34.303 回答
1

对于这个特定的数据,多值字段是正确的答案,但我想说一下关于pipe分隔字段的内容。我已经使用了很多,但总是将对象层次结构展平,例如将货币金额表示为 GBP|75000 或将维度表示为 ft|14。

在一种情况下,我用它来表示一个 XML 文档的一个部分,该部分具有 7 个不同标记的各种组合,因此我使用了一个包含 7 个项目的管道分隔列表的单个字段。例如:

Promotion|||December Days||773635554238
|quarterpage|||||883736656534

所有这些示例的一件事是项目列表中的位置是固定的,即货币代码始终位于第一位或营销 ID 始终位于最后。这意味着您可以可靠地搜索诸如GBP|*查找所有带有英镑货币*|quarterpage|*的文档或查找所有带有四分之一页广告的文档之类的内容。

最后一个示例的一个弱点是,您必须小心在市场营销领域的 7 个项目的所有不同用途中使用全局唯一术语,这会导致更长的术语,因此更高的 RAM 使用率。cat如果有时表示类别,有时表示目录,则它将不起作用cat

于 2011-11-18T04:37:57.960 回答