2012-10-12 67 views
0

我正在使用Lucene + Hibernate Search,並選擇DefualtAnalyzer作爲分析器。 但我不喜歡它,我只是希望輸入的值可以準確匹配。例如,輸入'我愛你',它會被分析爲'[Ilo lov ove eyo you]'。我不想使用分析儀進行搜索,我該怎麼辦?

我只想讓我只想'我愛你'匹配'我愛你',如果它不是'我愛你',你無法找到任何東西。

那麼如何讓它工作?

+0

你能請精煉您的問題。默認分析器稱爲_StandardAnalyzer_。你的標記化例子沒有意義,說實話,我不知道你在問什麼。 – Hardy

+0

從輸出中我猜他使用的是N-Grams分析器。 – Sanne

+0

是的,桑恩。但我不想使用任何分析器。任何事物都可以準確匹配。 – Jonathan

回答

1

做這樣的:

FullTextSession fullTextSession = Search.getFullTextSession(session); 
    Transaction tx = fullTextSession.beginTransaction(); 
    Querybuilder builder=fullTextSession.getSearchFactory(). 
          buildQueryBuilder().forEntity(persistentClass).get(); 
    Query luceneQuery=builder.keyword(). 
         onField("fieldName"). 
         ignoreAnalyzer(). 
         matching(queryText).createQuery(); 
1

如果你想在你需要使用索引過程關閉分析:

@Field.analyze(Analyze.NO) 
+0

這是我的ORM類:@Analyzer(impl = DefaultIndexAnalyzer.class)//使用預定義的分析器 public class RefAddressModel implements java.io.Serializable {..}如何禁用@Analyzer?我不想在索引和搜索時使用任何分析器 – Jonathan

相關問題