2017-04-27 69 views
0

我已經派人到Solr以下數據:Solr的後查詢solr沒有html標籤?

{ 
    "id":"kkk", 
    "name":"<div>book</div>" 
} 

接收數據,如果我搜索「格」,結果沒有顯示,但是當我搜索「書」,結果將顯示, 我能怎麼做 ? 這裏是我的架構:

<field name="name" type="text_html" indexed="true" stored="true"/> 

<fieldType name="text_html" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
     <charFilter class="solr.HTMLStripCharFilterFactory"/> 
     <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
     <filter class="solr.LowerCaseFilterFactory" /> 
     <filter class="solr.StopFilterFactory" 
       ignoreCase="true" 
       words="lang/stopwords_en.txt" 
      /> 
    </analyzer> 
</fieldType> 

Solr的只能剝去HTML標記時,我做了索引,如果我要發送Solr的直接數據,我怎麼能剝去html標籤?

+0

通過直接發送解決數據是什麼意思? –

+0

只是使用solr存儲數據而不是索引文件... –

+0

Solr只分析索引字段。 –

回答

1

作爲Solr查詢的結果,在字段name中看到的內容不是Solr真正索引的內容。

<charFilter class="solr.HTMLStripCharFilterFactory"/>過濾器將刪除HTML標記。

只有在執行完所有過濾器/標記化器後,內容才真正被Lucene索引。

看看Solr Admin Analysis Tool以更好地瞭解正在發生的事情。

總之,每個字段有兩個內容:

  • 存儲內容(stored="true"),其是傳遞到索引中的源文本(而這被返回給用戶當一個文檔與查詢匹配的約束。
  • 一個索引的內容(indexed="true"),它是由令牌/過濾器,然後將其用於信息檢索部處理後的源內容。

AFAIK,也沒有辦法來米因爲這是源字段,所以如果你想修改源代碼,只需在提交給Solr之前做好準備。

+0

那麼如果我想剝離存儲文本中的html標籤,我該怎麼辦? –

+0

我已更新我的答案以反映您的意見,請告知我是否清楚 – freedev

+0

好的,謝謝兄弟 –