繁体   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