Lucene:搜索附加了%的字符的数字

时间:2017-06-27 19:17:28

标签: lucene

我使用Lucene索引文档并搜索$ 5000和90%等值,但在我的搜索结果中,我发现标准分析器在索引代码时删除了$和%。所以我只有一个没有$和%符号的普通数字。我已经尝试过空白分析仪和简单的分析仪,但他们没有考虑数字。反正是否要使StandardAnalyzer不删除索引文档中的$和%?

我当前的indexwriter代码如下所示:

private IndexWriter createWriter() throws IOException {
    FSDirectory dir = FSDirectory.open(Paths.get(INDEX_DIR));
    IndexWriterConfig config = new IndexWriterConfig(new StandardAnalyzer());
    IndexWriter writer = new IndexWriter(dir, config);
    return writer;
  }

1 个答案:

答案 0 :(得分:0)

首先 - 就索引或搜索而言,为什么在索引中需要这些特殊字符?我想,如果没有这些符号,您的搜索将完全正常。

另外,恕我直言,如果这些是数值,你不应该使用StringText 字段类型,可能,这就是你在第一时间需要这些符号的原因。如果您尝试为数字数据构建内容,则应尝试使用字段LongPointDoublePoint等。

话虽如此,你所要求的是SOLR可以实现的,但不是普通的lucene(据我所知),除非你愿意编写自己的分析仪。

基本上,SOLR允许您为您的分析仪进行配置 - Using StandardTokenizerFactory with currency - 您无法通过直接使用 - StandardAnalyzerSimpleAnalyzer进行配置,因为它们可以做什么他们这样做 - 不能定制。

您可以使用org.apache.lucene.analysis.custom.CustomAnalyzer CustomAnalyzer Javadoc的构建器来构建自定义分析器。分析器基本上由一个标记器和多个过滤器组成。

我不知道,但你可以从浏览依赖开始 -

<dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-analyzers-common</artifactId>
</dependency>

查看是否有您需要的分析仪或标记器。

但同样,我觉得你在索引中不需要那些符号 - 这可以通过做一些pre&amp; amp;用于索引和搜索的后处理。

How to index words with special character in Solr