1
我已經定義爲字段類型如下:Solr的:如何條款的順序傳遞給字段作爲單個查詢字符串
<fieldType name="text_ngram" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="2"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="2"/>
</analyzer>
我要查詢的字段(名爲passage_body)這種類型如下(例如):
q = passage_body:(DPGC召集的術語)
問題是索引這個字段中的文本時,分析器工作得很好。但是,在查詢時,如果將debugQuery參數設置爲true,則可以看到該字段未按預期進行分析(不形成帶狀皰疹)。這是調試輸出:
<str name="rawquerystring">passage_body:(the term of dpgc convener)</str><str name="querystring">passage_body:(the term of dpgc convener)</str><str name="parsedquery">passage_body:term passage_body:dpgc passage_body:convener</str><str name="parsedquery_toString">passage_body:term passage_body:dpgc passage_body:convener</str>
當我在Solr admin中分析查詢時,輸出如預期。 我甚至嘗試將標準查詢解析器的「母豬」查詢參數設置爲false,但即使這樣也行不通。
總之,這是我的最終查詢:
http://localhost:8983/solr/mnitdocs/select?q=passage_body:(the term of dpgc convene)&sow=false&debugQuery=true
概括地說,我想匹配查詢的瓦至passage_body的帶狀皰疹。 請建議方法。其他建議也值得歡迎,因爲我是Solr的新手。
我正在使用Solr 5.3.1。
只是一個猜測,但你有沒有嘗試url編碼整個q =有效載荷:passage_body%3A(%20term%20of%20dpgc%20convene) –
你可以發表一個你想如何解析查詢字符串的例子嗎? –
我想將查詢字符串作爲「DPGC Convener的術語」傳遞。我使用引號來表示它是單個字符串,但不是短語。現在分析器應該處理這個字符串(標記,製作帶狀皰疹)。 – user7568303