【问题标题】:Solr returns different results for fq vs qSolr 为 fq 和 q 返回不同的结果
【发布时间】:2012-11-17 04:55:52
【问题描述】:

我已经在 Solr 中索引了电影数据。基本查询按预期工作,但是当我对构面和 q 进行过滤查询时,结果不同。

查询/select?q=facetGenre:Drama&wt=xml返回结果

而查询/select?q=*.*&fq=facetGenre:Drama&wt=xml 不返回任何结果。

这可能是什么原因?请帮忙。

由于类型字段中有“\”,例如“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>

【问题讨论】:

  • facetGenre的字段类型是什么?如果不是,请尝试将其设置为字符串类型。
  • 由于术语中可能有斜杠,我没有考虑将此字段映射到字符串:(。斜杠不适用于 SOLR 中的过滤器查询,或者我需要明确转义斜线?
  • 本节最后一点是这样说的:wiki.apache.org/solr/CommonQueryParameters#fq
  • 这个(和其他 SO 问题)也可能是相关的:stackoverflow.com/questions/8504477/…
  • 确保使用*:* 而不是*.*

标签: solr


【解决方案1】:

正如@joeln 指出的那样,您应该在查询中使用:

select?q=*:* 表示匹配任何字段中的任何值。

select?q=*.* 的情况下,由于查询中没有指定字段,因此它将在默认字段中搜索,并匹配其中包含. 的任何文本。也许这就是您没有得到任何响应的原因。

【讨论】:

  • 我没有注意到它真是太愚蠢了。期待一个土墩,幸好被一颗痣解决了。感谢您指出,Saumitra。
猜你喜欢
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多