出于某种原因,我的SOLR安装行为很糟糕(我也是这个话题的新手..)
例如: 在我的数据库中我有一个名为“品牌名称XX-7 Yadda Ladida”的项目
如果我搜索:
Brandname XX7
我没有得到结果的项目(前20名)
Brandname XX-7
我得到了第8个位置的预期结果; 第一个位置是“Brandname XX-2 Yadda Ladida”项目
Brandname XX-7 Ladida
我在第7位获得预期成绩; 第一个位置是“Brandname XX-2 Yadda Ladida”项目
Brandname XX-7 Yadda Ladida
我在第7位获得预期结果AGAIN; 第一个位置是“Brandname XX-2 Yadda Ladida”项目
PS。 eveything案例不敏感
我做错了什么? 请指教..
这是我的托管架构xml文件 http://pastebin.com/Z9nc36QD
更新 这是一个搜索“boss dd-7”的示例查询
"debug":{
"rawquerystring":"Brandname xx-7",
"querystring":"Brandname xx-7",
"parsedquery":"_text_:Brandname (_text_:xx _text_:7)",
"parsedquery_toString":"_text_:Brandname (_text_:xx _text_:7)",
答案 0 :(得分:0)
好的,不是通过简单地删除我的架构中的这一行
<filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="25" />
并添加
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" preserveOriginal="1" />
我的最终代码(考虑我的字段是text_general)
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" preserveOriginal="1" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" preserveOriginal="1" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>