Apache solr搜索部分单词

Pyd*_* UA 22 django solr django-search-lucene django-haystack

我正在使用apache solr搜索引擎来索引我的网站数据库..

我正在使用django + http://haystacksearch.org/

所以,假设我的文件中有"鸡"字样

当我搜索"鸡"时 - solr可以找到这个文件

但是,当我搜索"小鸡"时 - 它没有找到任何东西..

有没有办法来解决这个问题 ?

Bri*_*ian 18

注意:以下解决方案是Solr 1.4 (及以上)特定的!

为了获得更大的灵活性,我建议您使用NGramTokenizerFactory索引数据,以完成前后通配符搜索.如果您只想在字符串的开头或结尾搜索子字符串,请考虑使用EdgeNGramTokenizerFactory.

这里有一个替代文本字段类型,可以满足您的需求:

<fieldType name="text" class="solr.TextField" >
<analyzer type="index">
    <tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="15" />
    <filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory" />
    <filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)

  • 这真的很有用......我个人认为我会像上面那样创建一个新的字段类型..但是称为ntext或者其他东西......这样你就不会弄乱原始文本字段类型了. (2认同)

Cha*_*ert 7

如果你想找到以小鸡开头的所有单词,请搜索小鸡*.