我使用RavenDb存储数据。文档包含Id,Name,Description等列。
我将索引设置为"分析" for" Name"明显搜索输入文本的字段为"包含"在我正在使用的查询中 它作为" StartsWith"这工作正常。 见下面代码:
index setting
//this.Indexes.Add(x => x.Name, FieldIndexing.Analyzed);
//Data retrieving Code
//var resultSet = from temp in Query<Model>(Index.NAME)
//.Where(x => x.Name.StartsWith(Searchterm))
// select new { temp.Name }
我的问题是让我们说数据库中的名字是&#34; ABC PQR XYZ&#34;
CASE1(STARTS WITH):当我输入&#34; ABC&#34;在搜索框中,我正在获得如上所述的正确记录
CASE2(全字搜索):当我键入&#34; ABC P&#34;或&#34; ABC PQ&#34;或者&#34; ABC PQR&#34;,我没有得到任何结果。 (这是问题)
CASE3(CONTAINS):当我键入&#34; PQR&#34;或&#34; XYZ&#34;,我正在正确记录
现在我将索引更改为默认值,如:
//this.Indexes.Add(x => x.Name, FieldIndexing.Default);
从上面CASE1&amp; 2正在运行但是case3不是。
有什么方法可以让所有3个案件都有效吗?任何帮助将非常感谢..
答案 0 :(得分:0)
当您使用分析时,会发生的事情是您的文本被分解为单独的术语。
分析表明索引中的术语是:
[ABC,PQR,XYZ]
对于案例1,从开始,很容易看出它是如何工作的。 对于案例2,整个单词,你不 任何带有ABC P的术语,或类似的东西。
对于案例3,也没有包含该条款的条款。