我已经在Solr中索引了电影数据。基本查询按预期工作,但是当我为faces和q启动过滤器查询时,结果是不同的。
查询/select?q=facetGenre:Drama&wt=xml
会返回结果
而查询/select?q=*.*&fq=facetGenre:Drama&wt=xml
不会返回任何结果。
这可能是什么原因?请帮忙。
由于Genre字段中有“\”,例如“Action \ Adventure”,它是一个自定义字段类型“facetStringwithSlash。详情如下
<fieldType name="facetStringwithSlash" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[/,]\s*"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="0" preserveOriginal="1" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" stemEnglishPossessive="1"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[/,]\s*"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" preserveOriginal="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" stemEnglishPossessive="1"/>
<filter class="solr.ASCIIFoldingFilterFactory"/></analyzer></fieldType>
</analyzer>
</fieldType>
答案 0 :(得分:2)
正如@joeln指出的那样,您应该在查询中使用:
。
select?q=*:*
表示匹配任何字段中的任何值。
如果是select?q=*.*
,由于查询中未指定任何字段,因此它会在默认字段中进行搜索,并匹配其中包含.
的任何文本。也许这就是你没有得到任何回应的原因。