【问题标题】:Dismax query parser and special valuesDismax 查询解析器和特殊值
【发布时间】:2017-01-28 20:41:23
【问题描述】:

在 Solr 文档中,我看到使用 dismax 我可以按原样输入来自用户的查询值。 https://cwiki.apache.org/confluence/display/solr/The+DisMax+Query+Parser

DisMax 查询解析器支持一个极其简化的子集 Lucene QueryParser 语法。与在 Lucene 中一样,引号可用于分组 短语和 +/- 可用于表示强制和可选子句。 所有其他 Lucene 查询解析器特殊字符(AND 和 OR 除外) 转义以简化用户体验

所以只有那些值有一些特殊的含义:AND,NOT,+,-,"

但是当我使用 NOT 短语时,它的行为也像布尔运算符。另外当我有查询时:

q:"Difference Java &&",

我明白了:

 "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.solr.parser.ParseException"],
    "msg":"org.apache.solr.search.SyntaxError: Cannot parse 'Difference Java &&': Encountered \"<EOF>\" at line 1, column 18.\r\nWas expecting one of:\r\n    <NOT> ...\r\n    \"+\" ...\r\n    \"-\" ...\r\n    <BAREOPER> ...\r\n    \"(\" ...\r\n    \"*\" ...\r\n    <QUOTED> ...\r\n    <TERM> ...\r\n    <PREFIXTERM> ...\r\n    <WILDTERM> ...\r\n    <REGEXPTERM> ...\r\n    \"[\" ...\r\n    \"{\" ...\r\n    <LPARAMS> ...\r\n    \"filter(\" ...\r\n    <NUMBER> ...\r\n    <TERM> ...\r\n    \"*\" ...\r\n    ",
    "code":400}}

我是否误解了某些内容或其文档错误?是否有一些简单的方法可以忽略所有 lucene 特殊字符并将用户的查询短语放入 dismax 查询?无论如何,标准标记器都应该忽略这些值(对我来说没问题)

【问题讨论】:

  • 你能发布你正在做的整个 solr 查询吗
  • 我怀疑你实际上没有使用引号。 SyntaxError 包含这样的引号:Cannot parse '\"Difference Java &amp;&amp;\"'。但是,使用引号就不会出现错误。当我的任何 DisMax 查询(不带引号)以 &amp;&amp;AND||OR 结尾或开头时,会抛出与上述相同的语法错误。示例查询:q=hello+AND&amp;df=content&amp;defType=dismax。我想知道这是预期的行为还是应该被视为错误,因为 DisMax 应该像网络搜索引擎一样处理来自普通用户的输入。

标签: solr


【解决方案1】:

如前所述,引号可用于对短语进行分组,您只需将引号转义即可。

在内部,它使用双引号,当你传递它时,它会破坏它。所以逃脱它然后它应该可以正常工作。

q:"区别 Java &&"

此外,我想您正在使用 && 作为布尔运算符,因此您不需要在引号内传递它

我在本地做这个查询("java" && "python")

解析器在编码 &-> %26 后正确解析它。

q="java"%20**%26%26**%20"python"&wt=json&debug=true&qf=creator_txt&defType=dismax

"parsedquery_toString":"+(+(creator_txt:java) +(creator_txt:python)) ()",

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多