Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Search Apache Solr建议仅当搜索词缺少最后一个字符时才建议_Search_Solr - Fatal编程技术网

Search Apache Solr建议仅当搜索词缺少最后一个字符时才建议

Search Apache Solr建议仅当搜索词缺少最后一个字符时才建议,search,solr,Search,Solr,我对Broadleaf solr search有一个非常奇怪的问题,请参见下面的屏幕截图 这里是我用拼写错误的术语“mesur”搜索,然后solr搜索提供拼写更正结果,但看到结果所有结果似乎都缺少最后一个字符 现在看下面的第二个屏幕截图 现在我在搜索词及其“mesure”中添加了“e”,现在它没有提供任何结果。有良好solr经验的人能帮我解决这个问题吗?特别是为什么solr在建议中缺少最后一个字符?我通过更改schema.xml解决了我的问题,我对字段类型有问题,以前是这样的 <fie

我对Broadleaf solr search有一个非常奇怪的问题,请参见下面的屏幕截图

这里是我用拼写错误的术语“mesur”搜索,然后solr搜索提供拼写更正结果,但看到结果所有结果似乎都缺少最后一个字符

现在看下面的第二个屏幕截图


现在我在搜索词及其“mesure”中添加了“e”,现在它没有提供任何结果。有良好solr经验的人能帮我解决这个问题吗?特别是为什么solr在建议中缺少最后一个字符?

我通过更改schema.xml解决了我的问题,我对字段类型有问题,以前是这样的

<fieldType name="text_general_partial" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory" />

            <!-- Partial Word matcher -->
            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />

            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.TrimFilterFactory" />
            <filter class="solr.SnowballPorterFilterFactory" language="English" />
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1" generateNumberParts="1" catenateWords="0"
                catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" />

            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.TrimFilterFactory" />
            <filter class="solr.SnowballPorterFilterFactory" language="English" />
        </analyzer>
    </fieldType>

但我已经改成如下,它现在运行良好

<fieldType name="text_general_partial" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory" />

            <!-- Partial Word matcher -->
            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />

            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
             language="English" />
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1" generateNumberParts="1" catenateWords="0"
                catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" />language="English" />
        </analyzer>
    </fieldType>

language=“English”/
language=“English”/

根据xml模式删除了过滤器,其工作正常现在

我通过更改schema.xml解决了我的问题,我对字段类型有问题,以前是这样的

<fieldType name="text_general_partial" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory" />

            <!-- Partial Word matcher -->
            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />

            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.TrimFilterFactory" />
            <filter class="solr.SnowballPorterFilterFactory" language="English" />
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1" generateNumberParts="1" catenateWords="0"
                catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" />

            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.TrimFilterFactory" />
            <filter class="solr.SnowballPorterFilterFactory" language="English" />
        </analyzer>
    </fieldType>
<fieldType name="text_general_partial" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory" />

            <!-- Partial Word matcher -->
            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />

            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
             language="English" />
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1" generateNumberParts="1" catenateWords="0"
                catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" />language="English" />
        </analyzer>
    </fieldType>

但我已经改成如下,它现在运行良好

<fieldType name="text_general_partial" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory" />

            <!-- Partial Word matcher -->
            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />

            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
             language="English" />
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1" generateNumberParts="1" catenateWords="0"
                catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" />language="English" />
        </analyzer>
    </fieldType>

language=“English”/
language=“English”/

已根据xml schema删除筛选器,其工作正常现在

请为/suggest请求处理程序共享youer schema.xml和部分solrconfig.xml请为/suggest请求处理程序共享youer schema.xml和部分solrconfig.xml
<fieldType name="text_general_partial" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory" />

            <!-- Partial Word matcher -->
            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />

            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
             language="English" />
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1" generateNumberParts="1" catenateWords="0"
                catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" />language="English" />
        </analyzer>
    </fieldType>