当前位置:  开发笔记 > 编程语言 > 正文

让Lucene在术语中包含完全匹配的空格

如何解决《让Lucene在术语中包含完全匹配的空格》经验,为你挑选了2个好方法。

我希望我的Lucene查询包含类似于:

companyNam:梅赛德斯卡车

它将在companyName字段中与字符串"mercedes trucks"完全匹配.
companyName是一个未加密的字段,但任何带空格的东西都会返回null结果.

new TermQuery(new Term("companyName", "mercedes trucks"));

如果涉及空间,则总是得到0结果.否则我的程序运行正常.



1> 小智..:

也许替换:

mercedes trucks 

mercedes?trucks

适合我.



2> kirk.burleso..:

像这样使用PhraseQuery:

//create the query objects
BooleanQuery query = new BooleanQuery();
PhraseQuery q2 = new PhraseQuery();
//grab the search terms from the query string
string[] str = Sitecore.Context.Request.QueryString[BRAND_TERM].Split(' ');
//build the query
foreach(string word in str)
{
  //brand is the field I'm searching in
  q2.Add(new Term("brand", word.ToLower()));
}

//finally, add it to the BooleanQuery object
query.Add(q2, BooleanClause.Occur.MUST);

//Don't forget to run the query
Hits hits = searcher.Search(query);

希望这可以帮助!

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有