2009-07-06 43 views
3

我正在使用Lucene搜索引擎,但它似乎只能查找詞條開始時出現的匹配項。如何使用Lucene在單個詞語中找到匹配

例如: 搜索「one」將匹配「onematch」或「一天一次」,但不匹配「loneranger」。

Lucene doc聲稱它不支持搜索字符串前面的通配符,所以我不確定Lucene是否搜索詞間匹配,或者只能匹配以搜索詞開頭的文檔。

這是如何創建我的索引,我如何建立我的搜索查詢或只是Lucene的限制問題?

回答

0

如果搜索詞出現在其中的任何位置,Lucene將找到一個文檔,但它不允許您在通配符位於搜索詞前面的情況下執行通配符查詢,因爲它表現糟糕。如果這是你關心的功能,你將要麼必須做一些低級別的Lucene黑客更改配置標誌(感謝有趣的鏈接),找到已經完成黑客攻擊的第三方庫,或找到不同的搜索實現(對於足夠小的數據集,從大量RDBMS引擎進行內置搜索就足夠了)。

0

您的查詢應該是

「查詢查詢=新WildcardQuery(新詞(」 內容 「」 * *一個 「));」

其中內容是您正在搜索的字段名稱。

「one」應加上星號標記。在*之後的查詢中給出了空間,但不應該有空格。沒有空格*不顯示,這就是爲什麼我添加了明星。

相關問題