Apache Solr查询结果不一致

时间:2011-06-27 13:56:59

标签: java lucene solr

我是Apache Solr的新手,并尝试使用搜索术语对名为“normalizedContents”和“text”类型的字段进行查询。

所有搜索字词都必须存在于该字段中。问题是,我得到了不一致的结果。

例如,solr索引只有一个带有normalizedContents字段的文档,其值为“EDOUARD SERGE WILFRID EDOS0004 UNE MENTION COMPLEMENTAIRE”

我在solr的网络界面中尝试了这些查询:

  • normalizedContents:(edouard AND une)返回结果
  • normalizedContents :( edouar * AND une)返回结果
  • normalizedContents:(EDOUAR * AND une)不返回任何内容
  • normalizedContents :( edouar AND une)不返回任何内容
  • normalizedContents :( edouar * AND un)返回结果(虽然没有“un”字)
  • normalizedContents :( edouar * AND uned)返回结果(虽然没有“没有”字)

这是schema.xml中normalizedContents的声明:

<field name="normalizedContents" type="text" indexed="true" stored="true" multiValued="false"/>

因此,通配符和AND运算符不遵循预期的行为。我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

默认情况下,字段类型 text 确实源于内容(solr.SnowballPorterFilterFactory)。因此,'un'和'uned'匹配。然后,您可能在查询和索引分析器上都没有solr.LowerCaseFilterFactory过滤器,因此EDUAR *不匹配。并且第4次不匹配,因为edouard并不是为了edouar。如果需要完全匹配,则应将数据复制到另一个具有更有限过滤器类型的字段中。例如。只有solr.WhitespaceTokenizerFactory

从您的架构中发布<fieldType name="text">部分可能有助于理解所有内容。