2017-04-03 53 views
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。

+0

只是一個猜測,但你有沒有嘗試url編碼整個q =有效載荷:passage_body%3A(%20term%20of%20dpgc%20convene) –

+0

你可以發表一個你想如何解析查詢字符串的例子嗎? –

+0

我想將查詢字符串作爲「DPGC Convener的術語」傳遞。我使用引號來表示它是單個字符串,但不是短語。現在分析器應該處理這個字符串(標記,製作帶狀皰疹)。 – user7568303

回答

0

我想出了這個問題。將查詢參數「sow」設置爲false可以正常工作。它只是在最新版本的solr(6.5.0)中才可用。所以我切換到Solr 6.5.0。

相關問題