none
Full Text Search in Hebrew - sys.dm_fts_parser

    שאלה

  • היי

    אני מנסה להבין התנהגות של מנוע FTS בעברית,

    בדוגמה המצורפת אני משתמש בפונקציה sys.dm_fts_parser.

    כאשר אני מנסה לקבל תוצאות עבור המילה - חוק.

    הצפייה שלי היא לקבל 2 תוצאות צפויות -

    1. חוק

    2. חוקים.

    אך, אני מקבל רק את התוצאה הראשונה.

    לעומת זאת, כאשר אני מנסה את הדוגמה עם המילה "חוקים", אני מקבל את התוצאה הרצויה (2 שורות - חוק,חוקים)

    כיצד אפשר לקבל את התוצאה הרצויה למילה חוק.

    תודה

    שרון

    CREATE DATABASE [Hebrew] COLLATE Hebrew_CI_AS;
    GO 
    USE [Hebrew] 
    GO
    DECLARE @SearchString NVARCHAR(max) = 'חוקים';
    --INFLECTIONAL
    DECLARE @SearchPattern nvarchar(1000) = 'FORMSOF (INFLECTIONAL, " ' + @SearchString + ' ")' ;
    
    --English 1033
    --Hebrew 1037
    SELECT	DISTINCT display_term, expansion_type
    FROM	sys.dm_fts_parser(@SearchPattern, 1037, 0, 0)
    WHERE	special_term = 'Exact Match';
     ---------------------------------------------------------------------------
    --FREETEXT
    SET @SearchPattern = 'FORMSOF (FREETEXT, " ' + @SearchString + ' ")';
    
    SELECT	DISTINCT display_term, expansion_type
    FROM	sys.dm_fts_parser(@SearchPattern, 1037, 0, 0)
    WHERE	special_term = 'Exact Match';
    -----------------------------------------------------------------------------
    SET @SearchString = 'חוק';
    SET @SearchPattern = 'FORMSOF (INFLECTIONAL, " ' + @SearchString + ' ")' ;
    
    SELECT	DISTINCT display_term, expansion_type
    FROM	sys.dm_fts_parser(@SearchPattern, 1037, 0, 0)
    WHERE	special_term = 'Exact Match';
     ---------------------------------------------------------------------------
    --FREETEXT
    SET @SearchPattern = 'FORMSOF (FREETEXT, " ' + @SearchString + ' ")';
    
    SELECT	DISTINCT display_term, expansion_type
    FROM	sys.dm_fts_parser(@SearchPattern, 1037, 0, 0)
    WHERE	special_term = 'Exact Match';

    יום שישי 28 אפריל 2017 16:21

כל התגובות

  • הצפיה שלך לא מתאימה לצורה שהשרת עובד כניראה :-)

    מילים ברבים מחזירות גם הערך היחיד לכן בשאילתה שלך של קבלת הפרסור בעזרת sys.dm_fts_parser זו התוצאה

    אם תחפש ילדים אז תקבל ילד וגם ילדים אבל אם תחפש ילד תקבל רק ילד
    אם תחפש את המילים שונים אז תקבל כבר שלוש תוצאות של שונה, שוני, ושונים

    באופן דומה עבור המילה חוקים

    הרבה יותר קל לדון בנושא כאשר יש לנו טבלה עם דטא (DDL+DML) ואתה מציג תוצאות מצופות שאתה רוצה לקבל.

    בעקרון זו החוקיות של ברירת המחדל בעברית


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום רביעי 03 מאי 2017 13:14
    מנחה דיון