2012-02-25 77 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