2017-08-21 69 views
1

我正在使用solr 6.2.1,並且我想省略solr上特定字段中包含一些黑名單字(辱罵性字)的所有文檔。我在schema.xml-Solr黑名單字配置被索引和存儲

<!-- 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的。

夥計們,這可能嗎?如果是,請幫我修改配置。

+0

你不想排除單詞,你想完全排除文檔?你如何索引你的文件? – MatsLindh

+0

如果你想放棄整個文件在辱罵的話(是嗎?),然後我會去[更新請求處理器](https://lucene.apache.org/solr/guide/6_6/update-request-processors的.html)。 – cheffe

+1

有一個在這裏讀[solr中的褻瀆filteration](https://stackoverflow.com/questions/38435713/profanity-filteration-in-solr) – cheffe

回答

0

聽起來像你想要在你的索引管道前放置一個過濾器。你通常做的有一些在這種情況下,靈活是:

  1. 定義你的黑名單中的相關詞羣,有一些更多的元數據(如「顏色:黑,白」,「罵:他媽的,婊子。 ..')
  2. 在啓動時,你創建了一個Lucene(不是solr,你必須使用Lucene的低級別的api)每個單詞組的查詢
  3. 當你要插入一個新的doc時,首先創建一個包含單個文檔的MemoryIndex,並通過您的所有黑名單查詢運行它,如果有任何匹配,則跳過該文檔,請勿索引它。

在你最簡單的情況下,你只有一組單詞,但是如果你通過組定義它,它會更靈活和更容易維護單詞列表。