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