[英]Stopwords not getting removed - solr
我是使用Solr的新手,並且定義了以下架構:
<schema name="example" version="1.5">
<fields>
<field name="nodeId" type="string" indexed="true" stored="true" />
<field name="_root_" type="string" indexed="true" stored="false" />
<field name="datetime" type="string" indexed="true" stored="true"
multiValued="true" />
<field name="epochSecs" type="string" indexed="true" stored="true"
multiValued="true" />
<field name="subject" type="text_general" indexed="true"
stored="true" />
<field name="body" type="text_general" indexed="true"
stored="true" />
<field name="emailId" type="string" indexed="true"
stored="true" />
<field name="compliantFlag" type="boolean" indexed="true"
stored="true" />
<field name="_version_" type="long" indexed="true" stored="true" />
<field name="text" type="text_general" indexed="true" stored="false"
multiValued="true" />
<field name="ngrams" type="myNGram" indexed="true" stored="false" required="false" />
</fields>
<uniqueKey>nodeId</uniqueKey>
<copyField source="datetime" dest="text" />
<copyField source="epochSecs" dest="text" />
<copyField source="subject" dest="text" />
<copyField source="body" dest="text" />
<copyField source="emailId" dest="text" />
<copyField source="compliantFlag" dest="text" />
<copyField source="text" dest="ngrams"/>
<types>
<fieldType name="string" class="solr.StrField"
sortMissingLast="true" omitNorms="true"/>
<fieldType name="long" class="solr.TrieLongField"
precisionStep="0" positionIncrementGap="0" />
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
<fieldType name="text_general" class="solr.TextField"
positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="myNGram" stored="false" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="5"/>
</analyzer>
</fieldType>
</types>
索引時,停用詞不會從“ body”字段中刪除。
另外,如何使用solr的分析器從下面的字段中刪除特殊字符,例如\\ n:
\n \n\n\nThese are the numbers Smurfit has. \n\nP
任何幫助表示贊賞。 謝謝。
StandardTokenizer
應該在換行符,空格等周圍創建標記,並且停用詞過濾器一目了然,看起來應該可以正常工作。 不過,您可能應該在LowercaseFilter
上方包含StopwordFilter
,以防止這些匹配區分大小寫。
我想知道是否可能有一個相關的問題:“刪除”是什么意思? 分析僅影響字段的索引表示。 它不會以任何方式影響您從索引中檢索的存儲版本。 它旨在促進搜索,而不是轉換文本的存儲版本。 如果您通過過濾器刪除了“ the”一詞,那么搜索時就不會再碰到“ the”一詞了,但是當您從索引中檢索文檔時仍然會看到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.