2014-07-27 47 views
0

我有下面的定義字段,我工作完美的分析,但是當我試圖以這種方式查詢它,查詢分析行爲不同。我錯過了什麼?Solr ShingleFilterFactory查詢分析不worikng

數據: thd_keyphrase:總部設在加州的私人公司,社會媒體,私人持有的公司

查詢: Q = thd_keyphrase:找到任何社交媒體

在分析結果中,被處理這種方式:|找到任何|任何社會|社會媒體

和它匹配社交媒體

從調試查詢輸出

是sifferent:

"rawquerystring": "thd_keyphrase:find any social media", 
"querystring": "thd_keyphrase:find any social media", 
"parsedquery": "thd_keyphrase:find text:ani text:social text:media", 
"parsedquery_toString": **"thd_keyphrase:find text:ani text:social text:media",** 

,或者當我刪除默認的字段文本:「味精」:「在查詢中指定字段名,沒有通過‘DF’PARAM指定的默認」,

<fieldType name="keyphrase" class="solr.TextField" omitNorms="false" termVectors="false" multiValued="false"> 
    <analyzer type="index"> 
     <tokenizer class="solr.PatternTokenizerFactory" pattern="\s*,\s*"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="5" 
      outputUnigrams="false" outputUnigramsIfNoShingles="true" tokenSeparator=" "/> 
    <!-- <filter class="solr.KeepWordFilterFactory" words="keepwords.txt" ignoreCase="true" enablePositionIncrements="false"/>--> 
    <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
</fieldType> 
</types> 

回答

0

既然你在文本字符串中的空格確保用雙引號包圍它,像這樣:

q = thd_keyphrase:「找到任何社交媒體」

另外,你的意思是用逗號來標記字段嗎?

+0

我試過這個......它適用於「社交媒體」,對於「查找任何社交媒體」,它只生成一個令牌......但我想將整個查詢標記爲這些令牌|查找任何|任何社交|社交媒體 – Babu

+0

在ShingleFilterFactory中將您的maxShingleSize更改爲2. – user2630270

+0

Thas不是問題...數據中可能會有更大的短語...例如「Place in Europe Europe」...我希望能夠解析查詢「什麼是北歐最好的地方?」 ...非常令人困惑的是,在分析中它工作正常,它創造了帶狀皰疹和最大的匹配短語......但是當我嘗試它作爲查詢時,它試圖在默認字段中查找......也許我錯過了某些東西查詢,但它只是不應該在默認情況下搜索時,我明確地說,查看thd_keyphrase ...我是對嗎? – Babu