2011-11-17 75 views
0

我在Solr的DB表示该项目有关国家的国家字段中搜索字符串。国家名单是PIPE分离
例如:
<arr name="country"> <str>France | United Kingdom | Norway | UAE </str> </arr> 和像
<arr name="country"> <str>Australia | Belgium | Argentina </str> </arr>
现在的另一个项目,我需要寻找有关英国OR比利时 所有项目我想这Solr的:如何在面

 
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 

但这不起作用!你能指导我如何做这个搜索?
感谢您的帮助

回答

1

什么是分析在国家领域@索引和查询时间?

建议 -

指数的国家和多值,而不是由|分隔。 使用的字段类型以最小的分析或字段类型字符串过滤

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

筛选查询应

fq=country:Norway 
fq=country:("United Kingdom" OR Belgium) 
+0

为什么我们的情况下,不同的结果,我们没有把括号?! – Alaa

+0

如果我们不放括号,查询将基本匹配比利时的默认字段。所以查询将被转换为fq =国家:“英国”或文本:比利时 – Jayendra

1

工作,为这个特殊的数据,多值字段是正确的答案,但我想说一点约pipe分隔的字段。我有这些使用了不少,但总是扁平化的对象的层次结构,例如代表的货币金额为GBP | 75000或维度英尺| 14。

在一种情况下我用它来表示具有7个不同的标签的各种组合的XML文档的一部分,所以我用单个字段具有7项的管分隔的列表。例如:

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

的一件事关于所有这些例子中是该项目列表内的位置是固定的,即货币代码是总是首先或营销ID总是被持续。这意味着,您可以可靠地搜索喜欢的事情GBP|*找到与英镑汇率或*|quarterpage|*所有文件找到与季页广告的所有文件。最后一个例子的

一个缺点是,你有,你是在这导致延长还款期限,因此较高的RAM使用的市场营销领域的7个项目的所有不同用途采用全球唯一的方面要小心。如果有时cat意味着类别有时cat意味着介绍,它是行不通的。