[英]Cloudsearch 2013 API: term weights causing queries to return no results
我一直在尝试使用cloudsearch进行术语加权以改善搜索结果。 以前,如果我有这样的搜索查询:
q=(and (or 'JUN/2015' (prefix 'JUN/2015')))&q.parser=structured
...我将获得4650个结果。 通过将查询添加到查询中,我更新了查询以增加与特定字段的相关性:
q.options={fields:['name^2']}
...但是现在来自上面的相同查询未返回任何结果。
为什么术语权重会影响查询,使查询什么都不会返回?
fields
选项不仅控制提升,还控制搜索哪些字段。 因此,通过指定q.options={fields:['name^2']}
,您仅搜索name
字段,并且由于搜索范围更严格,因此必然会获得较少的结果。
形成文档: http : //docs.aws.amazon.com/cloudsearch/latest/developerguide/weighting-fields.html
除了控制字段权重之外,fields选项还定义了如果使用简单查询解析器或在使用结构化查询解析器时未在复合表达式的一部分中指定字段的情况下默认搜索的字段集。 有关更多信息,请参见Search API Reference中的Search Request Parameters。
因此,解决此问题的方法是在复合查询中或在fields
选项中指定其他字段。 有关搜索特定字段的文档的更多信息:
默认情况下,当您使用简单查询解析器时,将搜索所有文本和文本数组字段。 您可以通过指定q.options参数来指定要搜索的字段。 例如,此查询将搜索限制在标题和描述字段中,并提高了标题字段中匹配项比描述字段中匹配项的重要性。
q = star wars&q.options = {字段:['title ^ 5','description']}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.