在使用Solr搜索具有停用词的短语时遇到问题。 Solr使用stopword发送结果,这不是我预期的输出。
我在stopwords.txt
文件中添加了一个单词“test”。
在schema.xml
文件中,我有像
<field name="searchword" type="text" indexed="true" stored="true" />
我索引了一些数据,然后尝试在solr浏览器窗口中搜索如下: searchword:“test”,但我没有得到结果。 然后我又给了一个像搜索词:“测试数据”这样的短语,我得到了结果。如何避免这种情况?如果它包含停止词Solr不应该给出任何结果。当包含一个停用词的短语时,如何在solr中停止结果?
以下是我正在使用的fieldType:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" type="phrase"/>
</analyzer>
</fieldType>
我需要解决方案Solr没有提供任何结果,而我给出包含停用词的短语(测试)
答案 0 :(得分:1)
“停止”字是在搜索中未考虑的字词;它不是“停止”或使结果无效的词。所以你解释的行为是正确的:这就是停止词应该做的事情。
我无法在SOLR中知道,只要您使用某个特定单词(也许某人有想法,可以“停止”结果表单)。
我唯一能想到的是: - 在查询中查看这些术语时,不要将查询发送到SOLR :) - 在索引之前从文档中删除术语(例如,使用UpdateRequestProcessor)并使用AND查询,这样,只要查询中出现未编入索引的术语,您将获得零结果