我有這個號碼提取問題。 我想要得到所有沒有特定數字的比賽 例如:125501874,125001873 每個數字在位置2的55都不予考慮。Lucene號碼提取
第一號碼的範圍是0到9,第二個是1-9所以真正的範圍爲[01-99] (我們不能有00作爲前兩個數字)
使用Lucene我想添加NOT字段:[01-99] 55 *
但它似乎沒有工作。有沒有一種簡單的方法來查找?? 55 *並忽略它在搜索(「非字段:[01-99] 55 *」)?
謝謝Lucene的大師
我有這個號碼提取問題。 我想要得到所有沒有特定數字的比賽 例如:125501874,125001873 每個數字在位置2的55都不予考慮。Lucene號碼提取
第一號碼的範圍是0到9,第二個是1-9所以真正的範圍爲[01-99] (我們不能有00作爲前兩個數字)
使用Lucene我想添加NOT字段:[01-99] 55 *
但它似乎沒有工作。有沒有一種簡單的方法來查找?? 55 *並忽略它在搜索(「非字段:[01-99] 55 *」)?
謝謝Lucene的大師
謝謝你erickson,你的解決方案可能是最好的,使用ParallelReader如果我只能使用臨時索引,導致我們緩存搜索查詢,我們將需要這些。
但就像你之前說過的,最好從相關數字straighaway的索引開始。
我有另一種解決方案。
NOT field:0?55*
NOT field:1?55*
...
NOT field:9?55*
它對於我正在做的搜索來說足夠高效,它繞過了第一個字符的通配符限制。如果他們在哪裏檢查更多的數字,或者他們離開始的地方更遠,我不會使用它。 現在我正在測試一百萬行,這對我們的需求非常有效。
如果一個人只有在它的第三和第四位創建「僅索引」字段的Lucene能做到這一點非常有效。完整的值可以在原始字段中「存儲」(或存儲並索引,如果其他查詢使用整個數字)。
更新:後隨註釋問道,「難道[有]的方式來僅在第二位創建一個臨時索引」使用ParallelReader
「垂直分區」索引的字段。一個分區可以保存當前索引及其字段,而另一個分區可以是新字段的臨時索引,可能存儲在RAMDirectory
中。
假設數字在原始索引中「存儲」,迭代原始索引中的每個文檔,檢索存儲的字段,解析出關鍵數字,並將Document
添加到具有新字段的臨時索引。正如ParallelReader
文檔所述,文檔編號必須在兩個索引中匹配。
如果我沒有可能添加另一個索引? 我們已經有這些號碼的索引。他們是僅僅在第二位數字上創建臨時索引的方法嗎? – Khan 2009-04-23 18:02:44
是的,這也是一個很好的解決方法。如果您確定字段中的前兩個字符始終爲01-99,您是否可以使用「NOT field:?55 *」 – erickson 2009-04-24 16:06:54