在Solr文檔中,我發現使用dismax我可以把用戶的查詢值保持原樣。 https://cwiki.apache.org/confluence/display/solr/The+DisMax+Query+ParserDismax查詢分析器和特殊值
的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查詢中?標準分詞器應該反正ingore那些值(它對我來說)
你可以發佈你正在做 –
我懷疑你居然沒有使用引號整個Solr的查詢。 SyntaxError _would have_包含引號,如下所示:'無法解析'\「差異Java && \」''。但是,用引號就不會有錯誤。 當我的任何DisMax查詢(不含引號)結束或以'&&'或'AND'或'||'或'OR'開頭時,將拋出與上面相同的語法錯誤。示例查詢:'q = hello + AND&df = content&defType = dismax'。 我想知道這是預期的行爲還是應該被視爲一個錯誤,因爲DisMax應該處理像網絡搜索引擎這樣的常規用戶的輸入。 – Felizett