LinqToSql و البحث عن النص الكامل - يمكن أن يتم ذلك ؟

StackOverflow https://stackoverflow.com/questions/67706

  •  09-06-2019
  •  | 
  •  

سؤال

وقد أي شخص يأتي مع وسيلة جيدة من أداء النص الكامل البحث (FREETEXT() CONTAINS()) من أجل أي عدد التعسفي الكلمات الرئيسية باستخدام معيار LinqToSql بناء جملة الاستعلام?

أنا نحب لتجنب الاضطرار إلى استخدام Proc المخزنة أو إلى توليد دينامية SQL المكالمات.

من الواضح أنني يمكن أن مجرد مضخة سلسلة البحث في على المعلمة إلى SPROC يستخدم FREETEXT() أو يحتوي على(), ولكن كنت أتمنى أن تكون أكثر إبداعا في البحث بناء على الاستفسارات مثل:

"بيتزا" برغر ، وليس "فطيرة التفاح".

مجنون أنا أعرف - ولكن لن يكون أنيق أن تكون قادرة على القيام بذلك مباشرة من LinqToSql?أي نصائح حول كيفية تحقيق ذلك سيكون محل تقدير كبير.

تحديث:أعتقد أنني قد يكون على شيء هنا...

أيضا:أنا تدحرجت إلى الوراء تغيير على سؤالي العنوان لأنه فعلا تغير معنى ما كان يسأل.أنا أعلم هذا النص الكامل البحث هو غير معتمد في LinqToSql - أنا سألت هذا السؤال إذا أردت أن تعرف ذلك.بدلا من ذلك - لقد قمت بتحديث بلدي العنوان لاسترضاء تحرير-سعيد-تحريك اصابع الاتهام الجماهير.

هل كانت مفيدة؟

المحلول

للأسف LINQ to SQL server لا يدعم البحث عن النص الكامل.

هناك مجموعة من المنتجات إلى هناك أعتقد أن:Lucene.NET, NHibernate البحث يتبادر إلى الذهن.ينق ل NHibernate جنبا إلى جنب مع NHibernate البحث ربما تعطي هذه الوظيفة ، ولكن كلاهما لا يزال الطريق في عمق بيتا.

نصائح أخرى

لقد تمكنوا من الحصول على حول هذا باستخدام جدول الكرام وظيفة لتغليف البحث عن النص الكامل المكون ، ثم قارنته داخل LINQ التعبير الحفاظ على فوائد تأخير التنفيذ:

string q = query.Query;
IQueryable<Story> stories = ActiveStories
                        .Join(tvf_SearchStories(q), o => o.StoryId, i => i.StoryId, (o,i) => o)
                        .Where (s => (query.CategoryIds.Contains(s.CategoryId)) &&
                                    /* time frame filter */
                                (s.PostedOn >= (query.Start ?? SqlDateTime.MinValue.Value)) &&
                                (s.PostedOn <= (query.End ?? SqlDateTime.MaxValue.Value)));

هنا tvf_SearchStories' هو الجدول قيمة الوظيفة التي يستخدم داخليا البحث النص الكامل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top