java - 如何跳过 StopFilter 以获取单字值

标签 java lucene

我想创建自己的分析器,但仅对多字值应用 StopFilter,并且仍然使用单字值(停用词本身)对停用词进行索引

new Analyzer() {
            protected Analyzer.TokenStreamComponents createComponents(String fieldName) {
                final StandardTokenizer src = new StandardTokenizer();
                TokenStream tok = new StandardFilter(src);
                tok = new LowerCaseFilter(tok);
                tok = new StopFilter(tok, StandardAnalyzer.STOP_WORDS_SET);
                return new Analyzer.TokenStreamComponents(src, tok);
            }
        }

例如,我有 2 个值:

1. this
2. this table
3. table

使用上面的分析器,查询字符串是“this”,没有找到结果。但我希望对于该查询,结果应包含值 1 (this),而不包含值 2 (this table)

最佳答案

你可以试试这个:

...
final StandardTokenizer src = new StandardTokenizer();
src.setReader(new StringReader("this table")); 
...

关于java - 如何跳过 StopFilter 以获取单字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35813500/

相关文章:

java - 当您更新一个集合(即映射中的值),然后将键和值放入映射中时,是否会创建重复项?

java - Thymeleaf 没有看到来自 Spring 的对象

java - 检查是否调用了 void 方法

search - ElasticSearch 中的文档相似度

lucene - 有和没有_all的elasticsearch索引大小

java - 在基于 Java 的记事本中停用记事本中的 "Undo"之类的 MenuItem

apache - 在 localhost 中尝试 solr 时出错

lucene - Lucene.Net搜索结果突出显示搜索关键字

java - Hibernate Search 中的 boolean 查询

java - 在 Groovy (SoapUI) 中创建属性值列表时,列表会自动排序吗?