2014-05-14 54 views
-1

我已經將Lucene中的正則表達式編入索引,是否有可能使用標準分析器生成lucene查詢以便通過索引的正則表達式搜索給定的輸入?在Lucene中對正則表達式進行索引並搜索輸入

org.apache.lucene.search.Query luceneQuery50=queryBuilder4.keyword().wildcard().onField("RegularExpression").matching("9876654").createQuery();

的字段 「正則表達式」 被存儲爲一個字符串對象。

編輯

Hibernate Search的使用與註釋:

@Indexed public class NumbersTbl { @Field public String RegularExpression; } 

回答

0

如果您搜索數量,確保在創建Field,將它指定爲Field.Index.NOT_ANALYZED,否則號碼將被剝奪通過分析器進行索引。

編輯

參考這個答案的進一步細節Find regular expression match using Lucene?

EDIT2

您可以在@Field註釋,你不想被分析的字段中指定。這將保留索引字段的內容「原樣」。默認值是Analyze.YES。諮詢到docs

@Field(index=Index.YES, analyze=Analyze.NO) 

而且,由於你使用Hibernate Search,您可能想換了Lucene查詢到Hibernate查詢,看到這個getting started guide。您可能已經這麼做了,無法從您發佈的代碼中看出來。如果你想得到有用的答案,作爲一般規則,我建議你發帖更多代碼。如果你仔細想一想,很難從一行代碼中分辨出哪裏出了問題。

+0

我正在搜索的數字是輸入,我必須匹配索引正則表達式 –

+0

這絕對清楚。你能否修改你的文章並添加創建[Document](https://lucene.apache.org/core/4_0_0/core/org/apache/lucene/document/Document.html)的代碼索引和你想要查詢的查詢。 – bpgergo

+0

我正在使用Hibernate索引方法'@Indexed public class NumbersTbl {\t @ Field \t public String RegularExpression; }' –