2012-02-25 64 views
2

我遇到了問題,Google對我的幫助不大。我試圖找出在ColdFusion(9)中搜索Solr索引時忽略HTML的一種方法。CFSearch + Solr:忽略搜索中的HTML

例如,如果我搜索microsoft並且我的索引包含Microsoft© makes Windows®系統會提示我搜索「Microsoft©makeWindows®」,而不是顯示實際結果。如下所示,我只是將字符串傳遞給cfsearch的criteria屬性 - 但是再次 - 這樣做會產生(我認爲是)「髒」的結果。

<cfsearch 
     collection="mycollection" 
     criteria="microsoft" 
     name="results" 
     maxrows="100" 
     suggestions="always" 
     contexthighlightbegin="<strong>" 
     contextHighlightEnd="</strong>" 
     contextPassages="3" 
     /> 

我一直在尋找的Solr's query syntax的文檔,但我沒有看到任何關於如何避免這個問題跳出我。

我應該看看爲索引提供一個「平面」版本的文本還是有避免HTML字符串的方法,如&copy;/&reg;/&trade;

我願意接受建議。

- Brian。

+0

我使用CF10應該使用Solr 3.4根據http://www.corporatezen.com/2013/11/updating-solr-engine-coldfusion/。我將''添加到'「,但搜索結果仍返回HTML。任何想法爲什麼? – Henry 2015-02-24 02:21:14

回答

1

對於可能面臨着同樣的問題,任何人:

對於這個問題的解決方案是使用索引的另一種方法,而不是試圖解決該指數中的HTML。

在數據庫中,我創建了一個名爲index_search新的領域,並在我的應用程序中我的插入方法我用正則表達式來省略任何特殊(ER)字符:"[^[:word:].[:space:]-]"

從那裏,我通過index_search領域的的cfindex體和所使用的HTML名稱作爲標題:

<cfindex 
    collection="mycollection" 
    action="update" 
    body="name_search,html_description" 
    title="name_html" 
    key="UUID" 
    query="data"> 

使用搜索時對詞或短語接近,或者包裹在HTML該方法生產的預期的輸出。 IE:搜索microsoft將在其中列出其中包含Microsoft©的所有結果。

3

檢查您用來搜索的Solr字段是否設置了字符串字段類型,而不是使用文本(它允許標記化和其他文本分析)。有關詳細信息,請參閱this question

如果確實存在剝離HTML的問題,則必須將HTMLStripCharFilterFactory添加到字段類型配置中,該配置從索引字段中剝離HTML標記。

+0

謝謝Mauricio。 從你發佈的內容看,使用ColdFusion + Solr看起來沒有(相對)簡單的方法,所以我想我只是在編制索引之前去掉HTML。 – NotJustClarkKent 2012-02-27 16:53:47

+0

HTMLStripCharFilterFactory或任何其他charFilter的唯一問題是它們是在Solr 1.4中引入的,並且CF 9默認運行Solr 1.3。即使CF 9.0.1似乎也運行1.4版Solr版本。這並不是說一個人不能升級,因爲一個人肯定可以升級,只是這不會是開箱即用的CF 9。 – 2012-03-01 14:31:01

+0

@DavidFaber:哇,Solr 1.3現在〜3.5歲。在Solr幾年裏,這是很多* – 2012-03-01 14:59:30