我在solr search....The通配符搜索中遇到了一个问题,它似乎工作得很好,但是当我试图在另一个word.....For示例中查找词条时出现了一些问题:"rtebiggestBug",当我搜索最大值时,它没有给出任何结果。
<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”,找到的是bug,而不是"samplebug“这个词。
如果你能在这个问题上帮助我,那将是非常有帮助的。
提前谢谢。
发布于 2011-09-20 15:10:08
默认情况下,Solr不支持左截断,比如搜索*bug来查找samplebug。
像gubelpmas一样,使用solr.ReversedWildcardFilterFactory来颠倒术语并以一种受人尊敬的方式为therm建立索引。solr.ReversedWildcardFilterFactory
这里有一个教程:http://solr.pl/en/2010/12/20/wildcard-queries-and-how-solr-handles-them/
发布于 2011-09-20 15:10:30
您的查询解析器似乎无法处理前导通配符搜索。
您使用的是哪种查询解析器?
扩展的dismax查询解析器支持使用前导通配符进行搜索。你想要检查它。
https://stackoverflow.com/questions/7481138
复制相似问题