我正在使用Lucene + Hibernate Search,並選擇DefualtAnalyzer作爲分析器。 但我不喜歡它,我只是希望輸入的值可以準確匹配。例如,輸入'我愛你',它會被分析爲'[Ilo lov ove eyo you]'。我不想使用分析儀進行搜索,我該怎麼辦?
我只想讓我只想'我愛你'匹配'我愛你',如果它不是'我愛你',你無法找到任何東西。
那麼如何讓它工作?
我正在使用Lucene + Hibernate Search,並選擇DefualtAnalyzer作爲分析器。 但我不喜歡它,我只是希望輸入的值可以準確匹配。例如,輸入'我愛你',它會被分析爲'[Ilo lov ove eyo you]'。我不想使用分析儀進行搜索,我該怎麼辦?
我只想讓我只想'我愛你'匹配'我愛你',如果它不是'我愛你',你無法找到任何東西。
那麼如何讓它工作?
做這樣的:
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();
如果你想在你需要使用索引過程關閉分析:
@Field.analyze(Analyze.NO)
這是我的ORM類:@Analyzer(impl = DefaultIndexAnalyzer.class)//使用預定義的分析器 public class RefAddressModel implements java.io.Serializable {..}如何禁用@Analyzer?我不想在索引和搜索時使用任何分析器 – Jonathan
你能請精煉您的問題。默認分析器稱爲_StandardAnalyzer_。你的標記化例子沒有意義,說實話,我不知道你在問什麼。 – Hardy
從輸出中我猜他使用的是N-Grams分析器。 – Sanne
是的,桑恩。但我不想使用任何分析器。任何事物都可以準確匹配。 – Jonathan