簡體   English   中英

如何在lucene.net中使用特殊字符索引和搜索短語查詢?

[英]how to index and search phrase query with special characters in lucene.net?

我嘗試使用phrasequery搜索多個單詞和特殊字符,如“工程與構造”,並添加到布爾查詢但它沒有得到任何結果。我正在索引查詢的方式是

doc.Add(new Field("Industry","Engineering & Construction", Field.Store.YES, Field.Index.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS));

搜索:

var booleanQuery = new BooleanQuery();
PhraseQuery phrasequery = new PhraseQuery();
phrasequery.Add(new Term("Industry","Engineering & Construction"));
booleanQuery.Add(phraseQuery, BooleanClause.Occur.MUST);

booleanQuery包含{+ Industry:“Engineering&Construction”},盡管它沒有得到理想的結果。

這個

phrasequery.Add(new Term("Industry","Engineering & Construction"));

產生一個術語, Engineering & Construction ,但索引將按順序有兩個術語, engineeringconstruction&將被分析器刪除)。 像這樣手動構造一個短語查詢需要你理解標記,並分別添加每個術語,如:

phrasequery.Add(new Term("Industry","engineering"));
phrasequery.Add(new Term("Industry","construction"));

當然,更簡單的方法是使用查詢解析器;

Query phraseQuery = queryparser.parse("Industry:Engineering & Construction");
booleanquery.add(phraseQuery);

索引:

doc.Add(new Field("Industry","Engineering & Construction", Field.Store.YES, Field.Index.NOT_ANALYZED));

搜索:

TermQuery query = new TermQuery(new Term("Industry", "Engineering & Construction"));
booleanQuery.Add(query, BooleanClause.Occur.MUST);

這對我的標准很有用。它會搜索具有特殊字符的確切短語。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM