要索引和存储的Solr黑名单字配置

时间:2017-08-21 11:11:32

标签: solr lucene full-text-search

我正在使用solr 6.2.1并且我想省略所有在solr上的特定字段中具有一些列入黑名单的单词(滥用单词)的文档。我在schema.xml中有以下文本字段配置 -

<!-- A text field that only splits on whitespace for exact matching of words -->
<fieldType name="text" class="solr.TextField" positionIncrementGap="100" multiValued="true">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
  </analyzer>
</fieldType>

任何人都可以帮我省略列入黑名单的单词并将其存储在Solr上。

伙计们,有可能吗?如果是,请帮我纠正配置。

1 个答案:

答案 0 :(得分:0)

听起来像是要在索引管道前放置一个过滤器。在这种情况下,您通常采取的措施是:

  1. 您将相关单词组中列入黑名单,并添加一些元数据(例如&#39;颜色:黑色,白色&#39;,&#39;诅咒:他妈的,婊子......&#39;)< / LI>
  2. 在启动时,你创建一个Lucene(不是solr,你必须使用Lucene低级api)每组单词查询
  3. 当您要插入新文档时,首先要创建一个包含单个文档的MemoryIndex,然后在所有黑名单查询中运行它,如果有任何匹配,则跳过文档,不要索引它。
  4. 在最简单的情况下,您只有一组单词,但如果您按组等定义,则会更灵活,更容易维护单词列表。