1

我目前有一个非常奇怪的问题。

这是我正在使用的查询:

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 = "Rodrigo José Amaral Costa Nunes" 的人。如果我搜索“Costa”,它会返回 38 个结果,但以上都不是。

但是,如果关键字是“Rodrigo Costa”,那么唯一的结果(正确)就是上面的人。

甚至对此有解释吗?

4

2 回答 2

1

谢谢,但我解决了。

原来这是

query.TrimDuplicates = true;

导致问题的行。我将它从 true 更改为 false,现在它在“costa”搜索中返回了 10 个以上的结果。

但是,这没有任何意义。TrimDuplicates 用于重复值,为什么要限制完全不同页面的结果?

不管怎么说,还是要谢谢你

于 2012-06-26T13:09:35.100 回答
0

您可以尝试在 FREETEXT 谓词中为您的内容指定区域设置

CONTAINS | FREETEXT
([<column_identifier>,]'<content_search_condition>' [,LCID])

有关本地化搜索的更多信息,请点击此处

于 2012-06-26T07:41:24.143 回答