neo*_*ser 7 python django solr django-haystack
我haystack在一个项目中使用solr作为后端.我希望能够执行包含搜索,类似于Django.filter(something__contains="...")
该__startswith选项不适合我们的需求,顾名思义,它会查找以字符串开头的单词.
我尝试使用类似的东西,*keyword*但Solr不允许将*其用作第一个字符
谢谢.
要获得"包含"功能,您可以使用:
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="100" side="back"/>
<filter class="solr.LowerCaseFilterFactory" />
Run Code Online (Sandbox Code Playgroud)
作为指标分析器.
这将为您字段中每个空格分隔的单词创建ngrams.例如:
"Index this!" => x, ex, dex, ndex, index, !, s!, is!, his!, this!
Run Code Online (Sandbox Code Playgroud)
如您所见,这将大大扩展您的索引,但如果您现在输入如下查询:
"nde*"
Run Code Online (Sandbox Code Playgroud)
它将匹配"ndex"给你一个打击.
仔细使用此方法以确保您的索引不会太大.如果增加minGramSize或减少maxGramSize,它不会将索引扩展为mutch,但会减少"contains"功能.例如,设置minGramSize ="3"将要求您在包含查询中至少包含3个字符.
| 归档时间: |
|
| 查看次数: |
2632 次 |
| 最近记录: |