我在solr中有以下文档
<doc>
<str name="PackageName">A lot of devices on one drawing </str>
...
架构将PackageName定义为
<field name="PackageName" type="text_general_edge_ngram" indexed="true" stored="true" required="true"/>
其中
<fieldType name="text_general_edge_ngram" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
</analyzer>
</fieldType>
现在,我想设置一个用户查询
的查询 http://...:8983/solr/vault/select?q=PackageName:"A lot"
它会返回
http://...:8983/solr/vault/select?q=PackageName:"B lot"
不会回来 和
目前
http://...:8983/solr/vault/select?q=PackageName:B lot
和
http://...:8983/solr/vault/select?q=PackageName:A lot
重新调整文档,并用“在两种情况下都不会返回任何内容来包围它。”
如何更改查询?
感谢。
答案 0 :(得分:1)
EdgeNGramFilterFactory将删除小于为minGramSize定义的大小的标记,在您的情况下定义为2。检查JIRA
此外,当您查询packageName:"A Lot"
时,会在字段packageName上搜索搜索字词
但是,当您搜索packageName:A Lot
时,Solr会搜索packageName:a defaultField:lot
,这似乎与您的情况相符。