2011-07-27 30 views
5

我想在數十億字符串中進行常規子字符串搜索。這個要求與一般的全文搜索有點不同,因爲我想要一個查詢「ubst」也可以打到「substr」。爲子串搜索建立一個索引?

Lucene或Sphinx能做到這一點嗎?如果沒有,你認爲這樣做的最好方法是什麼?

回答

3

這種情況下的最佳索引結構是suffix tree Lucene沒有實現這種類型的索引,所以它的子串搜索很慢。但lucene具有前綴樹索引,這意味着如果通過前綴搜索術語,則可以進行快速搜索。

+0

謝謝。我自己構建了一個後綴數組。 –

0

Sphinx支持自2011年2月22日版本2.0.1-beta以來的有效子字符串搜索。不幸的是截至今天,該支持僅關注測試版本,如here所述。

我試了一下2.1.1測試版。它似乎工作正常。請參見manual entry獲取字典類型,閱讀關於keywords類型。

當我試圖用2.0.6發行版,它回落至低效CRC指數,給索引期間以下警告:

WARNING: min_infix_len is not supported yet with dict=keywords; using dict=crc 

我最小的配置文件:

​​