我目前有一个非常奇怪的问题。
这是我正在使用的查询:
string queryText = string.Format("SELECT Path, TelefoneContacto, EmpresaContacto, DireccaoContacto, MailContacto, TelemovelContacto, NomeContacto FROM scope() WHERE FREETEXT(NomeContacto, '{0}') AND (CONTAINS(Path,'/Contactos/Pages/')) ORDER BY \"NomeContacto\" ASC", keyword);
FullTextSqlQuery query = new FullTextSqlQuery(site);
query.ResultTypes = ResultType.RelevantResults;
query.EnableStemming = true;
query.TrimDuplicates = true;//alterado 4 Junho 2012
query.Hint = QueryHint.OptimizeWithPropertyStore;
query.KeywordInclusion = KeywordInclusion.AllKeywords;
query.Culture = SPContext.Current.Web.Locale;
query.RowLimit = 200;
query.QueryText = queryText;
现在,举个例子。
我正在搜索的列是“NomeContacto”。 想象一下,我正在寻找一个NomeContacto =“RodrigoJoséAmaralCosta Nunes”的人。如果我搜索“Costa”,它会返回38个结果,但没有一个是上面的结果。
但是,如果关键字是“Rodrigo Costa”,那么唯一的结果(正确)就是上面的人。
对此有甚么解释吗?
答案 0 :(得分:1)
谢谢,但我解决了。
原来这是
query.TrimDuplicates = true;
导致问题的行。我将它从true更改为false,现在在“costa”搜索中返回10个结果。
然而,这没有任何意义。 TrimDuplicates用于重复值,为什么它限制了完全不同页面的结果?
非常感谢
答案 1 :(得分:0)
您可以尝试在FREETEXT谓词
中为您的内容指定区域设置CONTAINS | FREETEXT
([<column_identifier>,]'<content_search_condition>' [,LCID])
有关本地化搜索的更多信息here