Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
能否精确匹配和停止Solr中的过滤混合_Solr_Tokenize_Stop Words_Exact Match - Fatal编程技术网

能否精确匹配和停止Solr中的过滤混合

能否精确匹配和停止Solr中的过滤混合,solr,tokenize,stop-words,exact-match,Solr,Tokenize,Stop Words,Exact Match,我在重新表述我先前的问题。希望有人能帮忙 我目前有一个solr实现,它只进行精确匹配 因此,“测试”的搜索短语将仅与“测试”匹配 不过,我还实现了模式替换过滤器 因此,搜索短语“汤姆和杰瑞”将与“汤姆和杰瑞”匹配 现在,我们要添加stopwordsfilter。我们希望在索引期间删除“THE” 因此,搜索短语“TEST”将与“thetest”匹配 我将标记器从KeywordTokenizerFactory更改为Whitespacetokenizerfactory。然而,搜索结果爆炸了 虽然“测试

我在重新表述我先前的问题。希望有人能帮忙

我目前有一个solr实现,它只进行精确匹配

因此,“测试”的搜索短语将仅与“测试”匹配

不过,我还实现了模式替换过滤器

因此,搜索短语“汤姆和杰瑞”将与“汤姆和杰瑞”匹配

现在,我们要添加stopwordsfilter。我们希望在索引期间删除“THE”

因此,搜索短语“TEST”将与“thetest”匹配

我将标记器从KeywordTokenizerFactory更改为Whitespacetokenizerfactory。然而,搜索结果爆炸了

虽然“测试”现在与“测试”匹配。它还与“水平测试”等匹配

有没有办法避免测试短语与水平测试等匹配

非常感谢您的帮助。谢谢

下面是我当前的索引分析器

 <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(&amp;)" 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="([~!#$%*+`?/|,.;:}{&lt;&gt;&quot;&#039;\^\=\]\[\\\-])" 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之外预处理停止字或在令牌之后添加服务器模式过滤器之外,任何人都知道一个解决方法,如果我们有太多的停止字,这可能是不可行的。