Solr IP地址字段类型

时间:2014-07-31 13:44:25

标签: java solr lucene ip

Solr中是否有特殊的字段类型用于IP地址,允许您在一系列IP地址中进行搜索?我唯一能想到的是使用Guava的InetAddresses.coerceToInteger和InetAddresses.fromInteger以整数格式存储IP。然后,每当我在IP范围内创建文档或搜索时,我都必须进行转换。我希望有一种领域类型可以解决所有这些问题。

2 个答案:

答案 0 :(得分:2)

似乎没有这样的字段included by default但是通过扩展FieldType类并使用Guava InetAddresses和Guava转换器来编写自己的字段应该不会太难。定义了自定义类后,see here了解如何在schema.xml中实现该字段

答案 1 :(得分:2)

您可以使用solr.PathHierarchyTokenizerFactory来进行基本的IP搜索。使用像这样的fielType

<fieldType name="ip_address" class="solr.TextField">
  <analyzer>
    <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="." replace="."/>
  </analyzer>
</fieldType>

您可以执行q=ip:192.168之类的搜索,这些搜索将返回以192.168.*.*开头的所有IP

示例192.168.1.2将被标记为

  • 192
  • 192.168
  • 192.168.1
  • 192.168.1.2