我正在使用Solr 4.6.0,並且試圖按年分組獲得最頻繁的術語。由於我的停用詞可能會經常更改,因此我不會在索引時間應用停用詞。相反,在查詢時間使用所有動態詞列表,如停用詞,原子詞和同義詞。但是,儘管停用詞列表包含諸如「of」和「the」之類的術語,但它們仍顯示在結果列表中(請參閱結果)。Solr方面在查詢時忽略停用詞
問題:我怎樣才能多面和禁用詞過濾的結果,如果我只用在查詢時StopFilterFactory?
信息
如果我使用StopFilterFactory在索引時間,如預期的一切。當我運行我的查詢時,「of」和「the」等術語被過濾掉。
我還使用Solr管理分析工具測試了field_name text_en的功能,結果如預期的那樣 - 「of」和「the」被過濾掉。這意味着不知何故SearchHandler不會調用正確的分析儀?
查詢
http://ip:port/solr/collection1/select?q=*:*&rows=0&facet=true&facet.pivot=year,text
結果
[..]
<lst name="facet_pivot">
<arr name="year,text">
<lst>
<str name="field">year</str>
<int name="value">2009</int>
<int name="count">139</int>
<arr name="pivot">
<lst>
<str name="field">text</str>
<str name="value">of</str>
<int name="count">135</int>
</lst>
<lst>
<str name="field">text</str>
<str name="value">the</str>
<int name="count">135</int>
</lst>
<lst>
<str name="field">text</str>
<str name="value">and</str>
<int name="count">123</int>
[..]
Schema.xml的
<field name="year" type="int" indexed="true" stored="true" />
<field name="text" type="text_en" indexed="true" stored="true" multiValued="true" />
[..]
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" />
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
你能否詳細解釋爲什麼你的停用詞經常變化?我想知道是否需要在這裏採用不同的方法。 –