当包含一个停用词的短语时,如何在solr中停止结果?

时间:2011-11-26 10:41:21

标签: search solr tokenize stop-words

在使用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没有提供任何结果,而我给出包含停用词的短语(测试)

1 个答案:

答案 0 :(得分:1)

“停止”字是在搜索中未考虑的字词;它不是“停止”或使结果无效的词。所以你解释的行为是正确的:这就是停止词应该做的事情。

我无法在SOLR中知道,只要您使用某个特定单词(也许某人有想法,可以“停止”结果表单)。

我唯一能想到的是:   - 在查询中查看这些术语时,不要将查询发送到SOLR :)   - 在索引之前从文档中删除术语(例如,使用UpdateRequestProcessor)并使用AND查询,这样,只要查询中出现未编入索引的术语,您将获得零结果