Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从Lucene索引中排除数字?_Java_Lucene - Fatal编程技术网

Java 如何从Lucene索引中排除数字?

Java 如何从Lucene索引中排除数字?,java,lucene,Java,Lucene,我正在开发一个信息检索应用程序,使用Lucene 5.3.1(目前最新版本),我设法为文本文件中的术语编制索引,然后在其中进行搜索。文本文件恰好包含章节号,如2.1,3.4.2等等 问题是,我不需要对这些数字进行索引,因为我不需要搜索它们,而且我还无法找到如何从标记化中排除某些术语,我知道分析器使用StopWords集排除几个术语,但据我所知,它对数字没有任何作用。我能想到的最简单的答案是——在索引之前从文本中删除数字。您可以使用正则表达式来实现这一点。此解决方案有一个副作用–PositionI

我正在开发一个信息检索应用程序,使用Lucene 5.3.1(目前最新版本),我设法为文本文件中的术语编制索引,然后在其中进行搜索。文本文件恰好包含章节号,如
2.1
3.4.2
等等


问题是,我不需要对这些数字进行索引,因为我不需要搜索它们,而且我还无法找到如何从标记化中排除某些术语,我知道
分析器使用StopWords集排除几个术语,但据我所知,它对数字没有任何作用。

我能想到的最简单的答案是——在索引之前从文本中删除数字。您可以使用正则表达式来实现这一点。此解决方案有一个副作用–
PositionIncrementAttribute将在没有这些数字的情况下计算,因为它们不会出现在文本中。这可能会破坏您的一些
短语查询

另一个选项,如前所述–编写自定义
TokenFilter
以去除数字。但你应该记住:

  • 调整
    分析器
    以不分解点上的术语。否则,
    2.1
    将是两个术语,而不是一个术语。这同样会导致
    短语查询出现问题
  • 正确更改
    PositionIncrementAttribute
    (递增)的值,同时从
    TokenStream
    中删除术语

我能想到的最简单的答案是:在索引之前从文本中删除数字。您可以使用正则表达式来实现这一点。此解决方案有一个副作用–
PositionIncrementAttribute将在没有这些数字的情况下计算,因为它们不会出现在文本中。这可能会破坏您的一些
短语查询

另一个选项,如前所述–编写自定义
TokenFilter
以去除数字。但你应该记住:

  • 调整
    分析器
    以不分解点上的术语。否则,
    2.1
    将是两个术语,而不是一个术语。这同样会导致
    短语查询出现问题
  • 正确更改
    PositionIncrementAttribute
    (递增)的值,同时从
    TokenStream
    中删除术语

没有单一的
分析器
-您可以编写自己的,或者只编写一个
标记过滤器
,以去除您不希望被索引的内容。没有单一的
分析器
-您可以编写自己的,或者只编写一个
标记过滤器
,以去除您不希望被索引的内容。