我有lucene.net 2.9一個奇怪的問題: 如果我尋找:high-quality
沒有找到任何結果。我發現連字符字符( - )是一個Lucene的問題,所以我搜索high quality
它完美地工作。Lucene的搜索數字的
當我搜索30-40
它顯示的結果,但30 40
沒有顯示任何。
第二方案是在第一與一個矛盾。 我想,因爲我有一個數字文本,第二個是相關的,但我沒有找到有關網絡的東西。
我有lucene.net 2.9一個奇怪的問題: 如果我尋找:high-quality
沒有找到任何結果。我發現連字符字符( - )是一個Lucene的問題,所以我搜索high quality
它完美地工作。Lucene的搜索數字的
當我搜索30-40
它顯示的結果,但30 40
沒有顯示任何。
第二方案是在第一與一個矛盾。 我想,因爲我有一個數字文本,第二個是相關的,但我沒有找到有關網絡的東西。
我猜你使用StandardAnalyzer
索引你的條款,然後搜索時沒有進行某種形式的分析,或採用不同的分析形式。
2.9 StandardAnalyzer
(ClassicAnalyzer
,版本3.1)在連字符周圍有一些有趣的行爲。引述StandardTokenizer
documentation:
把詞的連字符,除非有一些令牌,在這種情況下,整個令牌被解釋爲產品編號,而不是分裂。
所以兩個連字符的單詞(或字母任何集合)將被分割爲獨立的令牌,當扔進組合任何數量將解釋整個事情作爲一個產品編號,指數爲英格爾的道理,連字符和所有的,所以:
所以,如果在這樣的分析字段構建 「高質量」 一個TermQuery
,你將不會得到任何結果(儘管如果使用QueryParser
和相同的分析儀)。當搜索「30-40」時,「30-40」的TermQuery
將完全匹配。但「30」和「40」都不會找到匹配項。
所以,我不是你如何查詢運行爲不匹配有(可能使用StandardAnalyzer
當索引和WhitespaceAnalyzer
查詢時?),但希望在正確的方向點。
你需要加密「 - 」登錄URL參數。我認爲它會正常工作。
你能略低更具體到究竟你在做什麼。你如何調用lucene?使用什麼數據類型等等。 – CodeTower
我有一些PDF索引。我檢查了盧克,當我用盧克搜索時,我也遇到了同樣的問題,如果我正在搜索的文本包含「減號字符」沒有找到,並且文本包含數字後面跟着減號,再後面跟着數字被找到。 1)沒有找到高質量; 2)發現高質量; 3)找到30-40; 4)未找到30 40 – user3596223