我嘗試了許多lucene分析器,發現關鍵字分析器是我的要求的最佳匹配。我正在使用相同的關鍵字分析器來更新文檔並使用QueryParser搜索相同的文檔。 我想通過通配符搜索來搜索值。 例如:如果字段「國家」包含值「印度」 我可以搜索「ind *」,「ndi」,印度等相同的字段 我得到匹配的所有其他搜索除外完全匹配。 即。當我搜索確切的詞(國家:印度)時,我沒有得到任何匹配。 如果我改變「國家:印度*」或「國家:印度?」相同的查詢,我得到 比賽。 另外我還有一個疑問,如果有一個國家名稱「不」,我該如何搜索相同的。 我試過「國家:」不是「」和「國家:\不」。但都失敗了。 這兩種情況實際發生了什麼? 請幫忙。Lucene分析器用於簡單的直接字段搜索
1
A
回答
1
我懷疑你的國名後面有一些空格或其他無關字符。你既可以修剪輸入其添加到Lucene的前,或實現自定義關鍵字分析器,並添加TrimFilter
,是這樣的:
public final class CustomKeywordAnalyzer extends Analyzer {
public CustomKeywordAnalyzer() {
}
@Override
protected TokenStreamComponents createComponents(final String fieldName, final Reader reader) {
Tokenizer tokenizer = new KeywordTokenizer(reader)
TokenStream filter = new TrimFilter(Version.LUCENE_43, tokenizer);
return new TokenStreamComponents(tokenizer, filter);
}
}
至於搜索「不」,它僅僅是小寫應適量因爲它不能被解釋爲布爾運算符(AND
,OR
和NOT
運算符必須是大寫,每the documentation)。儘管如此,這些詞將被標準英文StopFilter
所捕獲,例如StandardAnalyzer
所使用的詞。查詢時確定只使用KeywordAnalyzer
嗎?
除非是,雖然,肯定的方式來避免查詢分析器保留字是隻繞過查詢分析器完全和構造查詢自己:
Query query = new TermQuery(new Term("country", userQuery));
相關問題
- 1. 索引字段的Lucene 4.2分析器
- 2. ASP.NET和Lucene直接搜索
- 3. 如何設置用於PhraseQuery搜索的Lucene標準分析器?
- 4. 分析器用於創建Lucene索引
- 5. 使用lucene在非分析字段上搜索
- 6. Zend搜索Lucene - 搜索特定字段
- 7. Lucene搜索2字段
- 8. 在Lucene中搜索字段
- 9. Lucene搜索所有字段
- 10. Lucene - 搜索數值字段
- 11. Lucene分析器的名字
- 12. Lucene的分析器進行索引和搜索
- 13. Lucene索引字段不可搜索
- 14. 使用Lucene分析器的QueryDSL和休眠搜索
- 15. 分析器用於Elasticsearch多字多字段搜索中的映射
- 16. 搜索多個數字字段Lucene
- 17. 在Lucene索引的字段中搜索多個單詞
- 18. Lucene中的多字段搜索
- 19. 按Lucene中的字段搜索
- 20. Lucene:用部分文字搜索
- 21. 基於語言改變Lucene分析器爲字段
- 22. Lucene前綴通過標準分析器搜索索引數據
- 23. 如何在compass-lucene搜索中使用分析器
- 24. 使用標準分析器磨砂Lucene搜索術語
- 25. 關於lucene搜索器優化器〜
- 26. 用於索引和查詢的Lucene自定義分析器
- 27. 在Zend中增強字段搜索Lucene
- 28. 在Lucene中搜索TokenStream字段
- 29. Zend Lucene搜索相關字段?
- 30. 在lucene中搜索首選字段
謝謝您的寶貴答案。雖然它不能完全解決我的問題。它幫助我理解了很多事情,以便我可以自己解決其他問題。 :) –