Làm cách nào để đảm bảo rằng lucene mang lại cho tôi kết quả tìm kiếm có liên quan khi chuỗi nhập của tôi chứa các cụm từ như C++? Lucene dường như bỏ qua các ký tự ++.Xử lý + làm ký tự đặc biệt trong tìm kiếm Lucene
Chi tiết mã: Khi tôi thực hiện dòng này, tôi nhận được truy vấn tìm kiếm trống.
queryField = multiFieldQueryParser.Parse(inpKeywords);
keywordsQuery.Add(queryField, BooleanClause.Occur.SHOULD);
Và đây là phân tích tùy chỉnh của tôi:
public class CustomAnalyzer : Analyzer
{
private static readonly WhitespaceAnalyzer whitespaceAnalyzer = new WhitespaceAnalyzer();
public override TokenStream TokenStream(String fieldName, System.IO.TextReader reader)
{
TokenStream result = whitespaceAnalyzer.TokenStream(fieldName, reader);
result = new StandardTokenizer(reader);
result = new LowerCaseFilter(result);
result = new StopFilter(result, stop_words);
return result;
}
}
Và tôi đang thực hiện truy vấn tìm kiếm theo cách này:
indexSearcher.Search(searchQuery, collector);
tôi đã làm thử queryField = multiFieldQueryParser.Parse (QueryParser.Escape (inpKeywords)) ;, nhưng nó vẫn không hoạt động. Đây là truy vấn được thực thi và trả về 0 lần truy cập. "+ (())"
Cảm ơn.
đang sử dụng WhiteSpaceAnalyzer chỉ ... nhưng vẫn + ký tự được bỏ qua –