Lucene的默認不允許在搜索方面領先的通配符,but this can be enabled有:瞭解Lucene的領先通配符性能
QueryParser#setAllowLeadingWildcard(true)
據我所知,使用通配符領先的防止Lucene的使用索引。帶有領先通配符的搜索必須掃描整個索引。
如何演示領先的通配符查詢的性能?什麼時候可以使用setAllowLeadingWildcard(true)
?
我已經建立了與模板10萬個文檔的測試指標:
{ name: random_3_word_phrase }
該指數是360M的磁盤上。
我的測試查詢執行得很好,我一直無法真正演示性能問題。例如,查詢name:*ing
可在不到1秒的時間內生成超過110萬份文檔。查詢name:*ing*
可同時生成超過150萬份文檔。
這是怎麼回事?爲什麼不這麼慢? 10,000,000份文件不夠?文件是否需要包含不止一個字段?
你需要一個更大的索引。嘗試下載維基百科數據集和索引,然後重新測試... – GalacticJello 2012-08-01 20:18:38
@GalacticJello在更多文檔中變得更大?每個文檔有更多字段?更長的領域? – 2012-08-01 20:33:36
你沒有提到lucene的版本。也許你已經知道,但4。0(目前的alpha版本)包含一些改進,使通配符搜索速度更快。 – javanna 2012-08-02 08:18:19