我有一个通配符查询,看起来像:
q=location:los a*
Run Code Online (Sandbox Code Playgroud)
我想要它匹配"洛杉矶"和"洛杉矶alt".像这样的查询:
q=los*
Run Code Online (Sandbox Code Playgroud)
工作得很好,但只要我添加空格我就没有结果.我如何在通配符查询中使用空格?
小智 33
我自己最近遇到过这个问题,似乎你需要做的只是逃避查询中的空间.您的原始查询将由Solr解释为如下所示:
location:los id:a*
Run Code Online (Sandbox Code Playgroud)
(假设"id"是您的默认搜索字段)
但是,如果您将查询编写为:
location:los\ a*
Run Code Online (Sandbox Code Playgroud)
然后它最终会被解析为:
location:los a*
Run Code Online (Sandbox Code Playgroud)
以上应该产生您想要的结果(假设您的数据被正确编入索引).
提示:弄清楚这一切很简单.只需添加&debugQuery=on到提交查询时使用的URL的末尾,以查看Solr如何解析它.
使用复杂查询解析器解决您的问题:
q={!complexphrase inOrder=true}location:"los a*"
Run Code Online (Sandbox Code Playgroud)
要了解有关复杂短语查询解析器的更多信息,请查看此链接! https://cwiki.apache.org/confluence/display/solr/Other+Parsers#OtherParsers-ComplexPhraseQueryParser