Как включить фонетические результаты при использовании ключевых слов?

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/9699

Вопрос

Я не могу получить пользовательский запрос ключевых слов, чтобы вернуть фонетические результаты при поиске людей.

У меня быстрый поиск установлен, и если я выполняю поиск людей (в центре быстрого поиска) для «Джона», я получаю ожидаемые результаты, содержащие как «Джон», так и «Джон». Однако, если я построю запрос ключевого слова (как показано ниже), я возвращаю результаты только для «Джона».

Какие-либо предложения?

using (SPSite spSite = new SPSite("http://localhost"))
{   
    // get the query and settings service proxy
    SearchQueryAndSiteSettingsServiceProxy settingsProxy = spSite.WebApplication.Farm.ServiceProxies.GetValue<SearchQueryAndSiteSettingsServiceProxy>();
    // get the search service application proxy by name
    SearchServiceApplicationProxy proxy = settingsProxy.ApplicationProxies.GetValue<SearchServiceApplicationProxy>("FAST Query SSA");

    KeywordQuery keywordQuery = new KeywordQuery(proxy);
    keywordQuery.RowLimit = 100;
    keywordQuery.EnablePhonetic = true;
    keywordQuery.EnableNicknames = true;
    keywordQuery.ResultsProvider = SearchProvider.SharepointSearch;

    keywordQuery.ResultTypes = ResultType.RelevantResults;

    keywordQuery.SelectProperties.Add("firstname");
    keywordQuery.SelectProperties.Add("lastname");

    keywordQuery.QueryText = "jon";

    ResultTableCollection fullTextSearchResults = keywordQuery.Execute();

    if (fullTextSearchResults.Exists(ResultType.RelevantResults))
    {               
        ResultTable searchResult = fullTextSearchResults[ResultType.RelevantResults];
        Console.WriteLine("Total Rows: " + searchResult.TotalRows) ;
        Console.WriteLine("Total Row Count: " + searchResult.RowCount);
        Console.WriteLine("Total Rows Including Duplicates: " + searchResult.TotalRowsIncludingDuplicates);
        Console.WriteLine("Is Total Rows Exact: " + searchResult.IsTotalRowsExact);
    }
}   
Это было полезно?

Решение

я нашел блог где кто -то ссылался на тот факт, что вам нужно установить RankingModelId на ключевом слова. Это работает для образца кода, который вы видите выше, а также для веб -части CoresearchResults, которую я создал.

Вот пример кода:

using (SPSite spSite = new SPSite("http://localhost"))
{   
    SearchQueryAndSiteSettingsServiceProxy settingsProxy = spSite.WebApplication.Farm.ServiceProxies.GetValue<SearchQueryAndSiteSettingsServiceProxy>();
    SearchServiceApplicationProxy proxy = settingsProxy.ApplicationProxies.GetValue<SearchServiceApplicationProxy>("FAST Query SSA");

    KeywordQuery keywordQuery = new KeywordQuery(proxy);
    keywordQuery.RowLimit = 100;
    keywordQuery.EnablePhonetic = true;
    keywordQuery.EnableNicknames = true;
    keywordQuery.ResultsProvider = SearchProvider.SharepointSearch;

    keywordQuery.RankingModelId = "D9BFB1A1-9036-4627-83B2-BBD9983AC8A1";       

    keywordQuery.ResultTypes = ResultType.RelevantResults;

    keywordQuery.SelectProperties.Add("firstname");
    keywordQuery.SelectProperties.Add("lastname");

    keywordQuery.QueryText = "jon";

    ResultTableCollection fullTextSearchResults = keywordQuery.Execute();

    if (fullTextSearchResults.Exists(ResultType.RelevantResults))
    {               
        ResultTable searchResult = fullTextSearchResults[ResultType.RelevantResults];
        Console.WriteLine("Total Rows: " + searchResult.TotalRows) ;
        Console.WriteLine("Total Row Count: " + searchResult.RowCount);
        Console.WriteLine("Total Rows Including Duplicates: " + searchResult.TotalRowsIncludingDuplicates);
        Console.WriteLine("Is Total Rows Exact: " + searchResult.IsTotalRowsExact);
    }
}   

Другие советы

Как насчет изменения значения результатов на «FastSearch»?

Для тех, кто пытается сделать это через веб -сервис, элемент, который вам нужен, назван RelevanceModel вместо RankingModelId

Я застрял, пытаясь заставить его работать через jQuery и Spservices Пока я не нашел Microsoft.Search.Query Schema ссылка и обнаружили имя элемента RelevanceModel При совершении звонков веб -службы. В ссылке не упоминается EnableNicknames или же EnablePhonetic, но я обнаружил, что им также нужно было заставить это работать.

Вот XML -запрос, с которым я закончил:

<QueryPacket Revision="1000">'
    <Query>
        <Context>
            <QueryText language="en-US" type="STRING">Jon scope:"People" </QueryText>
        </Context>
        <SupportedFormats Format="urn:Microsoft.Search.Response.Document.Document" />
        <ResultProvider>SharepointSearch</ResultProvider>
        <EnableNicknames>true</EnableNicknames>
        <EnablePhonetic>true</EnablePhonetic>
        <RelevanceModel>d9bfb1a1-9036-4627-83b2-bbd9983ac8a1</RelevanceModel>
        <Properties>
            ...
            <Property name="FirstName" />
            <Property name="LastName" />
        </Properties>
    </Query>
</QueryPacket>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top