【问题标题】:Caused by: org.hibernate.search.exception.SearchException: HSEARCH000114: Could not load resource: 'synonyms.txt'引起:org.hibernate.search.exception.SearchException:HSEARCH000114:无法加载资源:'synonyms.txt'
【发布时间】:2020-09-08 10:39:38
【问题描述】:

我第一次在 Spring Boot 中使用 Hibernate 搜索并尝试定义我自己的德语同义词,我正在使用以下代码:

@AnalyzerDef(name = "edgeNgram",
            tokenizer = @TokenizerDef(factory = WhitespaceTokenizerFactory.class),
            filters = {
                    @TokenFilterDef(factory = ASCIIFoldingFilterFactory.class), // Replace accented characeters by their simpler counterpart (è => e, etc.)
                    @TokenFilterDef(factory = LowerCaseFilterFactory.class), // Lowercase all characters
                    @TokenFilterDef(
                            factory = EdgeNGramFilterFactory.class, // Generate prefix tokens
                            params = {
                                    @Parameter(name = "minGramSize", value = "2"),
                                    @Parameter(name = "maxGramSize", value = "4")
                            }
                    ),
                    @TokenFilterDef(
                            factory = SynonymFilterFactory.class,
                            params = {
                                    @Parameter(name = "ignoreCase", value = "true"),
                                    @Parameter(name = "expand", value = "true"),
                                    @Parameter(name = "synonyms", value = "synonyms.txt"),
                            })

            })

当我使用“factory = SynonymFilterFactory.class”并定义我的“synonyms.txt”文件时,我得到了错误:

Caused by: org.hibernate.search.exception.SearchException: HSEARCH000114: Could not load resource: 'synonyms.txt'

我是 Spring Boot 的新手,如果有任何帮助,我将不胜感激! 谢谢

【问题讨论】:

    标签: spring spring-boot solr hibernate-search


    【解决方案1】:

    这个:

                                        @Parameter(name = "synonyms", value = "synonyms.txt")
    

    意味着您要求 Hibernate Search 从您的类路径中加载一个名为 synonyms.txt 的文件,并从中提取同义词列表。

    如果您的类路径的根目录中没有名为 synonyms.txt 的文件,则会出现此异常。

    添加文件,一切都应该恢复正常。

    请参阅org.apache.lucene.analysis.synonym.SolrSynonymParser 的 javadoc 了解此文件的格式。

    【讨论】:

    • 没错,当我让 Hibernate 加载“synonyms.txt”文件时,我得到了这个错误。这个“synonyms.txt”文件已经和我的代码在同一个根目录下。我什至试图给出我的“synonyms.txt”文件的完整路径,但没有成功。实际上,我要做的是在此处(stackoverflow.com/a/49444093/14240536)关注您的答案,而不是针对 wordnet,而是针对我自己的同义词。我认为其他人在 (stackoverflow.com/a/12855718/14240536) 上也有同样的问题 -> 对此答案的评论
    • "和我的代码在同一个根目录" => 文件不应该在src/main/java,它应该在src/main/resources。我不确定如果你把它放在src/main/java 会发生什么,我从来没有试过。如果还是不行,请创建一个基于this project 的复制器,让我看看。
    • 您不应在分析器定义中使用src/main/resources/synonyms.txt。只需synonyms.txt
    • 我能再问你一个问题吗?现在当我引用我的“synonyms.txt”文件时没有错误,但是当我尝试使用同义词文件时,我意识到休眠搜索没有捕获同义词。例如:在我的“synonyms.txt”文件中,我有 Universe、cosmos,在我的数据库中,我有“cosmos”这个词,但是当我搜索“universe”时,我没有得到“cosmos”作为搜索结果(“expand”在我的代码中设置为“true”)
    • 您将同义词过滤器放在 edgeNGram 过滤器之后。 edgeNGram 过滤器会将 "universe" 转换为 ["u", "un", "uni", "univ"],然后同义词过滤器将没有任何这些标记的同义词。我建议切换两个过滤器:首先是同义词过滤器,然后是边缘图过滤器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 2014-03-26
    • 2019-07-13
    • 2017-05-02
    • 2017-12-11
    • 1970-01-01
    相关资源
    最近更新 更多