您好我在Solr中有一个以1位或更多位数开头的字段。 例如
123Adam-R测试
2亚当测试
534534As
ABCSD
一个人
如何配置字段类型,以便它匹配任何仅以数字开头的数据?请建议。
我创建了这种类型,但它以其他方式剥离数字留下字符 例如数据“123ABCSD”它最终“ABCSD”。我想发出查询q = 0:9或somefield:。应该返回仅以数字开头的行。
<fieldType name="numbersfirst" class="solr.TextField">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="^[0-9]+([^[0-9]]*)" replacement="" replace="all"/>
</analyzer>
</fieldType>
答案 0 :(得分:1)
执行此操作的一种方法是创建一个单独的布尔字段,该字段仅存储您的字段是否以数字开头。然后,当您进行索引时,只需自己解析字段并相应地设置布尔字段。然后它是针对该布尔字段的简单查询。
答案 1 :(得分:0)
<script>
<![CDATA[
function findInfoStartingWithNumber(row) {
var patternStr = "^[0-9]+([^[0-9]]*)";
var pattern = java.util.regex.Pattern.compile(patternStr);
var inputStr = (row.get('name') == null ? "" : row.get('name').toString().trim().toUpperCase());
var matcher = pattern.matcher(inputStr);
var matchFound = matcher.find(); // false
row.put('StartsWithNumber',matchFound);
return row;
}
]]>
</script>
<entity name="MaterialInfo" transformer="script:findInfoStartingWithNumber" query="">
如果有人想知道上述元素在db-data-config.xml元素结构下的位置
<dataconfig>
<datasource>
<script>
</script>
<document>
<entity></entity>
</document>
</datasource>