簡體   English   中英

如何使用Hibernate Lucene搜索完整詞組和單個詞條?

[英]How to search a full phrase along with single terms using Hibernate Lucene?

之前,我們的搜索方式類似於“父親David Azrael”。 它返回所有帶有“父親”或“大衛”或“阿茲雷爾”的結果名稱。

以下是圖片中的代碼:

String[] FIELDS =  { "id", "person.firstName", "person.middleName", "person.lastName" };
for (String field : FIELDS) {
           for (String match : pattern) {     
                   bool.should(qb.keyword().wildcard().onField(field).matching(match).createQuery());
           }
        }
        query = bool.createQuery();

除了上述情況外,現在還有其他要求,即最終用戶要搜索“父親David Azrael”; 他應該只會得到一個結果。

意味着如果我們搜索“父親David Azrael”; 那么僅應顯示具有該名稱的結果,但如果用戶搜索“父親阿茲雷爾”,則該結果應可立即使用。

那么,為了實現相同的功能,需要對上述代碼進行哪些更改?

您可以使用短語查詢,如文檔的5.1.2.4部分所示:

bool.should(qb
    .phrase()
    .onField(field)
    .sentence("Father David Azrael")
    .createQuery());

我不知道您對“父親大衛·阿茲雷爾”和“父親·阿茲雷爾”的區別對待是什么意思,所以我不會在那部分發表評論,但這就是您創建短語查詢的方式。 您可以將詞組與現有的通配符查詢結合起來,方法是將兩者都添加到布爾查詢中以獲取兩組結果,而詞組匹配通常會獲得最高分。 或者,您可以先運行短語查詢,然后在沒有結果的情況下退回到通配符查詢。

暫無
暫無

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

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