2011-11-26 101 views
6

我在用Solr搜索带有停用词的短语时遇到问题。 Solr发送停止词的结果,这不是我的预期输出。如何在包含停用词的短语中停止solr的结果?

我在stopwords.txt文件中增加了一个单词“test”。 在schema.xml文件,我有一个像

<field name="searchword" type="text" indexed="true" stored="true" /> 

领域我收录了一些数据,然后试图在Solr的浏览器窗口中搜索如下:搜索内容:“测试”,我没有得到结果。 然后我又给了一个像这样的词组:search data:“test data”我得到了结果。如何避免这种情况?如果它包含停止词Solr不应该给任何结果。如何在包含停用词的短语中停止solr的结果?

以下是我使用的字段类型:

<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

您可以发布您的schema.xml吗? – javanna

回答

1

“停止不提供任何结果“单词是一个在搜索中未被考虑的单词;这不是一个“停止”或无效的结果。所以你解释的行为是正确的:停止词应该是这样做的。

在SOLR中,我无法知道每当你使用某个单词(可能有人有想法?)时,“停止”返回的结果表单。

我能想到的唯一的事情就是: - 不要将查询发送到SOLR当你看到在查询:) 这些术语 - 然后对其进行索引中删除从文件中的条款(例如,使用UpdateRequestProcessor )并使用AND查询,这样,只要没有索引的术语出现在查询中,您将得到零结果