能否精确匹配和停止Solr中的过滤混合
我在重新表述我先前的问题。希望有人能帮忙 我目前有一个solr实现,它只进行精确匹配 因此,“测试”的搜索短语将仅与“测试”匹配 不过,我还实现了模式替换过滤器 因此,搜索短语“汤姆和杰瑞”将与“汤姆和杰瑞”匹配 现在,我们要添加stopwordsfilter。我们希望在索引期间删除“THE” 因此,搜索短语“TEST”将与“thetest”匹配 我将标记器从KeywordTokenizerFactory更改为Whitespacetokenizerfactory。然而,搜索结果爆炸了 虽然“测试”现在与“测试”匹配。它还与“水平测试”等匹配 有没有办法避免测试短语与水平测试等匹配 非常感谢您的帮助。谢谢 下面是我当前的索引分析器能否精确匹配和停止Solr中的过滤混合,solr,tokenize,stop-words,exact-match,Solr,Tokenize,Stop Words,Exact Match,我在重新表述我先前的问题。希望有人能帮忙 我目前有一个solr实现,它只进行精确匹配 因此,“测试”的搜索短语将仅与“测试”匹配 不过,我还实现了模式替换过滤器 因此,搜索短语“汤姆和杰瑞”将与“汤姆和杰瑞”匹配 现在,我们要添加stopwordsfilter。我们希望在索引期间删除“THE” 因此,搜索短语“TEST”将与“thetest”匹配 我将标记器从KeywordTokenizerFactory更改为Whitespacetokenizerfactory。然而,搜索结果爆炸了 虽然“测试
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(&)" replacement="AND"/>
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(@)" replacement="AT"/>
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(['_\(\)])" replacement=" "/>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="([~!#$%*+`?/|,.;:}{<>"'\^\=\]\[\\\-])" replacement="" replace="all"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true" enablePositionIncrements="false"/>
经过几次修补。经过几次修补,将精确搜索和停止过滤相结合似乎就像油和水一样。将精确搜索和stopfilter相结合似乎就像油和水一样。首先,我使用KeywordTokenizerFactory标记器仅为精确匹配创建一个标记。现在,如果stopwords在创建的令牌上找到匹配项,则会将其删除。例如,我有一个搜索短语“测试”。我的副词是“the”。因为我使用了关键字标记器,所以它只创建一个标记“thetest”。因此,停止词“the”将与“the test”不匹配。要使stopfilter工作,您需要一个不同的标记器(如空格)来创建两个toke“the”和“test”以使其工作。但是,如果我使用的是关键字以外的标记器,则无法实现精确匹配。。搜索结果将爆炸。除了在solr之外预处理停止字或在令牌之后添加服务器模式过滤器之外,任何人都知道一个解决方法,如果我们有太多的停止字,这可能是不可行的。