查询没有 html 标签的 solr?

query solr without html tags?

我已经向 Solr 发送了以下数据:

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

solr接收到数据后,如果我搜索"div",结果不显示,但是当我搜索"book"时,结果会显示,我该怎么办? 这是我的架构:

<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标签?

您在字段 name 中看到的作为 Solr 查询结果的内容并不是 Solr 真正索引的内容。

<charFilter class="solr.HTMLStripCharFilterFactory"/> 过滤器将删除 HTML 个标签。

只有filters/tokenizers全部执行完内容才真正被Lucene索引。

查看 Solr Admin Analysis Tool 以更好地了解正在发生的事情。

总之,每个字段有两个内容:

  • 存储的内容 (stored="true"),它是传递给索引的源文本(当文档匹配查询约束时返回给用户。
  • 一个索引内容(indexed="true")是经过token/filters处理后的源内容,然后用于信息检索部分。

AFAIK,处理后无法修改存储的(源)内容,因为这是字段的源,所以如果你想修改源,只需在提交给 Solr 之前准备好。