过滤Solr中的多值字段

时间:2013-07-18 10:27:03

标签: solr


如何在多值字段的数组内搜索
我的数据就像这样

 <str name="Key">8</str>
       <arr name="city">
          <str>Achabal (NAC)</str>
          <str>Addi Gam</str>
          <str>Adeh Hall</str>
          <str>Aho Paisan</str>
          <str>Akin Gam</str>
          <str>Akura</str>
          .......
        </arr>
       <str name="state">Chandigarh</str>

我想在城市内搜索我正在尝试下面的查询

q=city:*Ak* AND state:Chandigarh <br>

但不工作
上述数据是单一文件

2 个答案:

答案 0 :(得分:2)

多值字段与单值字段(从查询角度来看)没有区别。请注意,在您的查询中出现错误:SOLR不支持使用*符号作为搜索的第一个字符。

见下面的链接

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.ReversedWildcardFilterFactory http://solr.pl/en/2010/12/20/wildcard-queries-and-how-solr-handles-them
http://www.solrtutorial.com/solr-query-syntax.html

答案 1 :(得分:0)

你不应该使用&amp;在您的查询中,但改为+或%20(空格)。 &安培;分隔url查询参数和状态内容不会作为q的值传递。

尝试q=city:*Ak*+state:Chandigarhq=city:*Ak* state:Chandigarh

您可能还想做的是在此处使用过滤器查询而不是查询参数:  q=city*Ak*&fq=state:Chandigarh

这将查询所有具有'Ak'的城市,并将结果仅限于州='Chandigarh'

的城市