我正在尝试使用WordDelimiterFilterFactory
配置solr 4.0-BETA,以便查询包含连字符的数字。
字段值:“123456-1234”,添加到ssn
。
查询:
“123456-1234”< - 作品(连字符)
“1234561234”< - 不起作用(没有连字符)
根据文档(AFAIUI),它应该匹配,因为字段类型具有generateNumberParts
和catenateNumbers
。
来自文档:
generateNumberParts =“1”会导致生成数字子字: “500-42”=> “500”“42” catenateNumbers =“1”导致最大运行次数 要连接的数字部分:“500-42”=> “50042”
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.WordDelimiterFilterFactory
我的领域:
<fields>
<field name="ssn" type="text_en_splitting" indexed="true" stored="false" multiValued="false" />
<field name="ssn_exact" type="string" indexed="true" stored="true" multiValued="false" />
</fields>
<copyField source="ssn" dest="ssn_exact" />
<copyField source="ssn" dest="text" />
text_en_splitting
中的过滤器:
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
我在这里缺少什么?
答案 0 :(得分:1)
我在本地架构中创建了一个类似的字段,并使用Solr Admin下的分析工具。 (http://localhost:8983/solr/#/collection1/analysis
- 请注意,此网址假设solr在http://localhost:8983/
上运行,并且您的索引名为collection1
- 根据需要进行修改。
我尝试将您的值运行到索引,并在Analyze FieldName / FieldType下拉列表中选择text_en_splitting查询。您将从结果中看到,值1234561234永远不会添加为此字段类型的索引术语。
但是,如果您使用text_en_splitting_tight FieldType,则会删除您想要的行为,因为删除了hypen并且1234561234是添加到索引中的术语。所以我会按如下方式切换字段类型并重新编制索引,你应该设置为go。
<fields>
<field name="ssn" type="text_en_splitting_tight" indexed="true" stored="false" multiValued="false" />
<field name="ssn_exact" type="string" indexed="true" stored="true" multiValued="false" />
</fields>
<copyField source="ssn" dest="ssn_exact" />
<copyField source="ssn" dest="text" />