SOLR-stop-word:带';属于';不给出结果,但排除of时,我们得到正确的结果

SOLR-stop-word:带';属于';不给出结果,但排除of时,我们得到正确的结果,solr,stop-words,Solr,Stop Words,谁能解释一下SOLR中的停止词是如何工作的。 在我的stopword.txt中,我定义了的。在schema.xml中,我有 <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"enablePositionIncrements="true"/> 调试时: +(upclist:cream+of+wheat&qt=productresults&rows=10&fq=status%3A

谁能解释一下SOLR中的停止词是如何工作的。 在我的
stopword.txt
中,我定义了
。在
schema.xml
中,我有

<filter class="solr.StopFilterFactory" ignoreCase="true" 
words="stopwords.txt"enablePositionIncrements="true"/>
调试时:
+(upclist:cream+of+wheat&qt=productresults&rows=10&fq=status%3AActive&fq=facilitystatus%3AActive&fq=facilitystatus%3A100&fq=InventoryCtrCode%3a00+TO+100%5D&fq=weblifecycle%3A%283+OR+4%29&fq=groupnumber%3A2^1.2;关键词:cream+of+wheat&qt=productresults&rows=10&fq=status%3AActive&fq=facilitystatus%3AActive&fq=facilitystatus%3AActive&fq=facilitystatus=facilitystatus%3A=100&fq=facilitystatus%3A=Faci%5b0+to+100%5d&fq=weblifecycle%3a%283+或+4%29&fq=groupnumber%3a2^20.0 |产品提升:奶油+小麦&qt=productresults&rows=10&fq=status%3aactive&fq=facilitystatus%3aactive&fq=facilityid%3a100&fq=inventoryctrlcode%5b0+to+100%5d&fq=weblifecycle=3a%283+或+4%29&fq=groupnumber%3a2^5.0(奶油+of+小麦&qt=productresults&rows=10&fq=status%3aactive&fq=facilitystatus%3aactive&fq=facilityid%3a100&fq=InventoryCtrCode%3a%5b0+to+100%5d&fq=weblifecycle%3a%283+或+4%29&fq=groupnumber%3a2奶油)小麦QTProductResultsRow(奶油行)10 fq状态%3活动fq设施状态%3活动fq设施ID%3a100 fq inventoryctrlcode%3a%5b0(至fq状态%3aactivefqfacilitystatus%3aactivefqfacilityid%3a100fqinventoryctrlcode%3a%5bTo)100%5d fq weblifecycle%3a%283(或fqweblifecycle%3a%283or)4%29 fq(组号%3a2 fqgroupnumber%3a2 CreamOfWheatQTProductsResultsRows10FQStatus%3aactivefqfacilitystatus%3aactivefqfacilityid%3a100fqinventoryctrlcode%3a%5bTo100%5dfqweblifecycle%3a%283或4%29fqgroupnumber%3a2)”~3^2.5 | productid:cream+of+wheat&qt=productresults&rows=10&fq=status%3AActive&fq=facilitystatus%3AActive&fq=facilityid%3A100&fq=inventoryctrcode%3A%5B0+TO+100%5D&fq=weblifecycle%3A%283+OR+4%29&fq=groupnumber%3A2^1.7 |产品名称:cream+of+wheat&qt=productresults&rows=10&fq=status%3AActive=facilitystatus=100&fq=facilitystatus%3ad=100&fq=facilityid=100%ryctrlcode%3a%5b0+到+100%5d&fq=weblifecycle%3a%283+或+4%29&fq=groupnumber%3a2^10.0)~0.01()

这可能不相关,因为您说您只在一个字段上搜索(我之所以发布它,是因为您说您使用的是edismax和qf)。当我想加强精确搜索时,我也遇到了类似的问题,所以我将qf做成了这样:
title^45 title\u str^55
。title字段使用了stopwords,而title\u str显然不是。下面介绍了它经常找不到使用stopwords的搜索的原因。他们的解决方案是使用mm值。解决方案在我的例子中,t的工作是将title_str放在pf标记中(并将其从qf标记中删除),因此准确的查找结果将出现在顶部。

最后通过更改以下内容解决了此问题:


“嗯”从2您可以共享整个字段定义吗?是的,我可以,请看上面,我已经在问题描述中添加了它。感谢您的帮助。您是否在Solr analyze UI中对此进行了测试?您使用的Solr版本是什么?您是如何在stopwords.txt文件中存储单词的,如每行单词或每行双引号中的单词?您是sea吗在单个字段上搜索,或者在Demax中使用qf=在多个字段上搜索?我也在做类似的事情:productname ^10 productid ^1.7 upclist ^1.2 area ^2.5 product\u提升^5关键字^20
        <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
            <filter class="solr.StopFilterFactory"
                    ignoreCase="true"
                    words="stopwords.txt"
                    enablePositionIncrements="true"
                    />
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.WordDelimiterFilterFactory"
                    generateWordParts="1"
                    generateNumberParts="1"
                    catenateWords="1"
                    catenateNumbers="1"
                    catenateAll="1"
                    preserveOriginal="1"
                    splitOnCaseChange="0"
                    splitOnNumerics="0"
                    types="wdtypes.txt"
                    />
            <filter class="solr.KeywordRepeatFilterFactory"/>
            <filter class="solr.EnglishMinimalStemFilterFactory"/>
            <filter class="solr.TrimFilterFactory" updateOffsets="false"/>
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>

        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.StopFilterFactory"
                    ignoreCase="true"
                    words="stopwords.txt"
                    enablePositionIncrements="true"
                    />
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.WordDelimiterFilterFactory"
                    generateWordParts="1"
                    generateNumberParts="1"
                    catenateWords="1"
                    catenateNumbers="1"
                    catenateAll="1"
                    preserveOriginal="1"
                    splitOnCaseChange="0"
                    splitOnNumerics="0"
                    types="wdtypes.txt"
                    />
            <filter class="solr.EnglishMinimalStemFilterFactory"/>
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>