Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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 Hibernate搜索自定义停止词列表_Java_Hibernate_Lucene_Hibernate Search - Fatal编程技术网

Java Hibernate搜索自定义停止词列表

Java Hibernate搜索自定义停止词列表,java,hibernate,lucene,hibernate-search,Java,Hibernate,Lucene,Hibernate Search,我需要自定义stopwords列表,以便按文档标题进行搜索。 我有以下映射: @Entity @Indexed @AnalyzerDef( name = "documentAnalyzer", tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), filters = { @TokenFilterDef(factory = ASCIIF

我需要自定义stopwords列表,以便按文档标题进行搜索。 我有以下映射:

@Entity
@Indexed
@AnalyzerDef(
        name = "documentAnalyzer",
        tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
        filters = {
                @TokenFilterDef(factory = ASCIIFoldingFilterFactory.class),
                @TokenFilterDef(factory = LowerCaseFilterFactory.class),
                @TokenFilterDef(
                        factory = StopFilterFactory.class,
                        params = {
                                @Parameter(name = "words", value = "stoplist.properties"),
                                @Parameter(name = "ignoreCase", value = "true")
                        }
                )
        }
)
public class Document {

    ...

    @Field(analyzer = @Analyzer(definition = "documentAnalyzer"))
    private String title;

    ...
}
stoplist.properties文件位于resources目录中,包含与StandardAnalyzer默认值不同的stopwords

但是,如果我使用默认启用但在stoplist.properties文件中不存在的stopwords(例如,单词will),则搜索不会返回任何结果

当前配置有什么问题? 如何使hibernate搜索使用自定义停止词列表

我使用hibernate搜索orm 5.6.1版本

通过动态创建索引,在集成测试中验证结果:

@Before
public void setUpLuceneIndex() throws InterruptedException {
    FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
    fullTextEntityManager.createIndexer().startAndWait();
}

就我所见,你的配置看起来很正常

更改停止字配置后,是否重新为实体编制索引?您需要在索引时考虑新配置


若您这样做了,但它仍然不起作用,请尝试在StopFilterFactory构造函数中添加一个断点,并通知该方法以查看发生了什么

实体在集成测试更新的问题描述中被编入索引,其中包含我用于验证搜索的附加信息。我已经查看了StopFilterFactory,stopWords属性由我的自定义属性文件中的单词填充。这个解决方案仍然不起作用。奇怪。尝试使用我们的测试用例模板复制它:。它可能会帮助您找到问题,如果不是,我会看一看!我刚刚将自定义分析器添加到所有索引字段中,整个解决方案开始正常工作。感谢您提供测试用例模板。