簡體   English   中英

休眠搜索突出顯示未分析的字段

[英]Hibernate search highlighting not analyzed fields

如果它們與搜索查詢匹配,我想突出顯示未分析的整個字段。
被索引的實體如下所示:

@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(analyze = Analyze.NO)
    private String notAnalyzedField; // has "x-xxx-xxx" format

    @Field(analyze = Analyze.YES)
    private String analyzedField;   

}

假設我有一個帶有notAnalyzedField: "a-bbb-ccc"Document notAnalyzedField: "a-bbb-ccc" ,然后運行具有相同值的搜索查詢,並使用以下代碼突出顯示搜索結果:

String highlightText(Query query, Analyzer analyzer, String fieldName, String text) {
    QueryScorer queryScorer = new QueryScorer(query);
    SimpleHTMLFormatter formatter = new SimpleHTMLFormatter("<span>", "</span>");
    Highlighter highlighter = new Highlighter(formatter, queryScorer);
    return highlighter.getBestFragment(analyzer, fieldName, text);
}

結果,我得到以下代碼段: "a-<span>bbb</span>-<span>ccc</span>"
它似乎是合理的,因為該分析儀把a符號作為停用詞和-作為分隔符,並且不突出顯示它們。 但是我無法弄清楚在突出顯示該字段時如何避免使用分析儀。 Highlighter類中有一些方法需要TokenStream而不是Analyzer但是我不確定如何使用它們。

我要實現的結果是整個突出顯示的字段: "<span>a-bbb-ccc</span>"
有沒有一種方法可以通過休眠搜索來實現?

您的分析儀來自哪里?

您可能想從Hibernate Search中獲取它:

FullTextEntityManager em = /*...*/;
Analyzer analyzer = em.getSearchFactory()
    .getAnalyzer(Document.class);
highlightText(query, analyzer, fieldName, text);

如果不起作用,請嘗試使用KeywordAnalyzerKeywordAnalyzer highlightText(query, new KeywordAnalyzer(), fieldName, text);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM