使用存储的html字段高亮显示时,Solr剥离html
在rails中使用Solr和太阳黑子 我正在使用如下字段类型搜索html字段:使用存储的html字段高亮显示时,Solr剥离html,solr,ruby-on-rails-3.1,sunspot-solr,Solr,Ruby On Rails 3.1,Sunspot Solr,在rails中使用Solr和太阳黑子 我正在使用如下字段类型搜索html字段: <fieldType name="text_html" class="solr.TextField" omitNorms="false"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <charFilter class="solr.HTMLStripCharFilterFact
<fieldType name="text_html" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="text_html" class="solr.TextField" omitNorms="false">
<analyzer>
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
然后我执行搜索并使用存储字段,以便在结果中返回突出显示的文本。我遇到的问题是,存储值中包含原始html文本。例如:对“新闻”的搜索返回:
社区连接到@@@hl@@@news@@@endhl@@@、体育、本地交易和所有最新对话。\n\n
然后我想用html包装的标记替换标记@@@hl@@、@@@endhl@@@
我是否需要自己手动去除原始的html标记(div等)标记,还是有办法让存储的值已经去除html标记
我知道如何手动执行此操作,只是想确保schema.xml或solrconfig.xml中没有遗漏某些内容
谢谢在插入Solr之前或从索引中检索之后,您需要手动剥离数据/格式。in-Solr针对该字段运行,并在将令牌/术语插入该文档的索引之前或在查询处理期间对传递的值执行操作。但是,它将始终存储用于返回的字段值,并以原始形式传递查询结果
如果您碰巧使用将数据加载到Solr中,它将提供和/或您可以利用删除html标记。在插入Solr之前或从索引检索之后,您需要手动删除该数据/格式。in-Solr针对该字段运行,并在将令牌/术语插入该文档的索引之前或在查询处理期间对传递的值执行操作。但是,它将始终存储用于返回的字段值,并以原始形式传递查询结果
如果您碰巧使用将数据加载到Solr中,它提供了一个和/或您可以利用来删除html标记。对于我的项目,我还需要在索引之前剥离html标记,我的google搜索首先将我带到了这里。在短暂访问Paige Cook链接的文档后,我发现了您的
schema.xml
可能存在的问题
根据,
标记必须位于
标记之前
所以我觉得你应该有这样的东西:
<fieldType name="text_html" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="text_html" class="solr.TextField" omitNorms="false">
<analyzer>
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
对于我的项目,我还需要在编制索引之前剥离HTML标记,而我的谷歌搜索首先将我带到了这里。在短暂访问Paige Cook链接的文档后,我发现了您的
schema.xml
可能存在的问题
根据,
标记必须位于
标记之前
所以我觉得你应该有这样的东西:
<fieldType name="text_html" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="text_html" class="solr.TextField" omitNorms="false">
<analyzer>
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
谢谢,我会在进去的路上把它们脱掉。谢谢,我会在进去的路上把它们脱掉。