我在solr搜索中面临一个问题....外卡搜索似乎工作正常但是当我试图在另一个单词中找到术语时会出现问题.....例如:&#34 ; rtebiggestBug",当我搜索最大的时候,它没有给出任何结果。我在schema.xml文件中有以下条目
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<!-- <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>-->
<filter class="solr.LowerCaseFilterFactory"/>
<!-- <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/> -->
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50" preserveOriginal="1"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<!-- <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>-->
<filter class="solr.LowerCaseFilterFactory"/>
<!-- <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>-->
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
另一个问题是,它没有在单词的末尾找到字符串。示例:我搜索了“bug”并发现了错误,而不是单词&#34; samplebug&#34;。
如果你能在这个问题上帮助我,那将非常有帮助。
提前致谢。
答案 0 :(得分:4)
默认情况下,Solr不支持左截断,例如搜索*bug
以查找samplebug
。
使用solr.ReversedWildcardFilterFactory
来反转术语,并以尊敬的方式索引热身,例如gubelpmas
。 solr.ReversedWildcardFilterFactory
这是一个教程:http://solr.pl/en/2010/12/20/wildcard-queries-and-how-solr-handles-them/
答案 1 :(得分:0)
您的查询解析器似乎无法处理前导通配符搜索。
您使用的是什么查询解析器?
Extended dismax查询解析器支持使用前导通配符进行搜索。你想检查它。