【问题标题】:CFSearch + Solr: Ignoring HTML in SearchesCFSearch + Solr:在搜索中忽略 HTML
【发布时间】:2012-02-25 23:57:00
【问题描述】:

我遇到了问题,Google 并没有给我太多帮助。我正在尝试找出一种在 ColdFusion (9) 中搜索 Solr 索引时忽略 HTML 的方法。

例如,如果我搜索 microsoft 并且我的索引包含 Microsoft© makes Windows®,系统会提示我搜索“Microsoft© 制造 Windows®”,而不是显示实际结果。

正如您在下面看到的,我只是将字符串传递给 cfsearch 的条件属性 - 但同样 - 这样做会产生(我认为的)“脏”结果。

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

我一直在查看 Solr's query syntax 的文档,但我没有看到任何关于如何避免此问题的信息。

我应该考虑为索引提供文本的“平面”版本还是有办法避免诸如&amp;copy; / &amp;reg; / &amp;trade; 之类的 HTML 字符串?

我愿意接受建议。

-- 布赖恩。

【问题讨论】:

标签: coldfusion solr coldfusion-9


【解决方案1】:

检查您用于搜索的 Solr 字段是否设置为字符串字段类型,而不是文本(允许标记化和其他文本分析)。有关这方面的更多信息,请参阅 this question

如果剥离 HTML 确实存在问题,您必须将 HTMLStripCharFilterFactory 添加到您的字段类型配置中,这会从索引字段中剥离 HTML 标记。

【讨论】:

  • 谢谢毛里西奥。从您发布的内容来看,使用 ColdFusion + Solr 似乎没有(相对)简单的方法,所以我想我只是要在索引之前去掉 HTML。
  • HTMLStripCharFilterFactory 或任何其他 charFilter 的唯一问题是这些是在 Solr 1.4 中引入的,而 CF 9 默认运行 Solr 1.3。甚至 CF 9.0.1 似乎也运行了 1.4 之前的 Solr 版本。这并不是说不能升级,因为肯定可以升级,只是这不是开箱即用的 CF 9 上运行的内容。
  • @DavidFaber :哇,Solr 1.3 现在已经有 3.5 年了。这在 Solr 年里 很多 :)
【解决方案2】:

对于可能面临相同问题的任何人:

这个问题的解决方案是使用另一种索引方法,而不是尝试解决索引中的 HTML。

在数据库中,我创建了一个名为 index_search 的新字段,并在我的应用程序中的 insert 方法中使用了正则表达式来省略任何特殊字符:"[^[: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© 的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2012-01-01
    • 2012-07-01
    • 2012-08-07
    相关资源
    最近更新 更多