我正在使用 Lucene 索引文档并搜索 $5000 和 90% 等值,但在我的搜索结果中,我发现标准分析器在索引代码时删除了 $ 和 %。所以我只有一个没有 $ 和 % 符号的普通数字。我尝试过空格分析器和简单的分析器,但它们不考虑数字。有没有办法让标准分析器不删除索引文档中的 $ 和 %?
我当前的索引编写器代码如下:
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;
}
首先——就索引或搜索而言,为什么在索引中需要那些特殊字符?我想,如果没有这些符号,你的搜索会非常好。
另外,恕我直言,如果这些是数值,则不应使用字符串
或文本
字段类型,因此可能需要这些符号。如果你试图为数值数据构建一些东西,你应该尝试使用字段 LongPoint
, DoublePoint
等 .
话虽如此,你所要求的用SOLR是可以实现的,但用普通的lucene却不行(据我所知),除非你愿意编写自己的分析器。
基本上,SOLR允许您为ananalysizer进行配置-使用StandardTokenizerFactory和货币-您无法直接使用-StandardAnalyzer
或SimpleAnalyzer
来进行配置,因为它们做的是它们所做的-这是无法定制的。
您可以使用org.apache.lucene.analysis.custom.CustomAnalyzer
CustomAnalyzer Javadoc的构建器来构建您的自定义分析器。分析器基本上由标记器和多个过滤器组成。
我不知道有什么,但是你可以从浏览依赖关系开始-
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
</dependency>
看看是否有适合您需要的分析器或分词器。
但同样,我觉得你的索引中不需要这些符号 - 这可以通过做一些预
如何在Solr中对具有特殊字符的单词进行索引