Solr查询结果使用*

age*_*ile 3 solr

我想提供部分匹配,所以我在*搜索查询的末尾.我注意到,gatorade的搜索查询将返回12个结果,而gatorade*返回7.所以*似乎是1或许多而不是0或许多......我怎样才能实现这一点?我在索尔的部分匹配是否都错了?谢谢.

Chr*_*ris 7

首先,我认为Solr通配符更好地概括为"0或许多"而不是"1或许多".我怀疑这是你问题的根源.(例如,请参阅WildcardQuery的javadoc.)

第二,你是否正在使用词干,因为我的第一个猜测是你正在处理一个词干问题.Solr通配符可以表现出奇怪的干扰.这是因为通配符扩展的基础是搜索存储在倒排索引中的术语列表; 这些术语将采用词干形式(可能类似于"gatorad"),而不是原始源文本中的词语(可能是"gatorade"或"gatorades").

例如,假设你有一个将"g​​atorade"和"gatorades"映射到词干"gatorad"的词干分析器.这意味着你的倒排索引不会包含"gatorade"或"gatorades",只包含"gatorad".如果您随后发出查询gatorade*,Solr将遍历术语索引,查找以"gatorade"开头的所有词干.但是没有这样的词干,所以你不会得到任何比赛.同样,如果您搜索了gatorades*,Solr将查找以"gatorades"开头的所有词干.但是没有这样的词干,所以你不会得到任何比赛.

第三,为了获得最佳帮助,我建议发布更多信息,特别是:

  • 您要提交给Solr的一些特定查询URL
  • 您的schema.xml文件的摘录.特别是,包括A)您遇到问题的字段的字段元素,以及B)与这些字段对应的字段类型定义

  • +1需要来自OP的更多信息才能正确诊断. (2认同)