6

我在使用 Solr 搜索包含停用词的短语时遇到问题。Solr 使用停用词发送结果,这不是我的预期输出。

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 的解决方案没有提供任何结果(测试)

4

1 回答 1

1

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

每当您使用特定单词时,我都无法在 SOLR 中“停止”返回结果表单(也许有人有想法?)。

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

于 2012-01-31T12:41:29.863 回答