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

Bor*_*ens 7 c# lucene.net

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

companyNam:梅赛德斯卡车

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

new TermQuery(new Term("companyName", "mercedes trucks"));
Run Code Online (Sandbox Code Playgroud)

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

小智 10

也许替换:

mercedes trucks 
Run Code Online (Sandbox Code Playgroud)

mercedes?trucks
Run Code Online (Sandbox Code Playgroud)

适合我.


kir*_*son 9

像这样使用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);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


its*_*dok 0

我在这里猜测 - 是否exactMask在字符串周围添加引号?您应该简单地使用字符串“mercedes Truck”,而不对其进行操作。

new TermQuery(new Term("companyName", "mercedes trucks"));
Run Code Online (Sandbox Code Playgroud)