使用Match Againt MySQL和PHP从文本中提取句子

Extract Sentence from Text Using Match Againt MySQL and PHP

提问人:Mahmoud M. Abdelmalek 提问时间:7/3/2022 更新时间:7/6/2022 访问量:55

问:

我目前正在开发一个基于PHP和MySQL的阿拉伯语图书网站 我有以下查询

SELECT page_content FROM `book` WHERE MATCH(page_content) Against('رائد' IN BOOLEAN MODE)

当用户搜索特定文本时,我们会运行此查询,它会成功从所有可用书籍中获取匹配的单词,但是, 我们连续拥有本书的每一页,问题是查询获取整个页面内容文本,现在我们想获得确切的搜索词(第一次出现)+ 5 个单词之后和 5 个单词之前

例如

المقالة نوع من الأدب، هي قطعة إنشائية، ذات طول معتدل تُكتب نثراً، وتُهتمُّ بالمظاهر الخارجية للموضوع بطريقة سهلةٍ سريعة، ولا تعنى إلا بالناحية التي تمسُّ الكاتب عن قرب.رأى النور في عصر النهضة الأوروبية، واتخذ مفهومه من محاولات التي أطلق عليها اسم Essais، و“الفصل” (صيد الخاطر) كما عرفه العرب أقدم رائد للمقالة في الآداب العالمية، ذلك أن الفصل في الأدب العربي قد ظهر قبل ظهور مقالات مونتاني إمام هذا الفن غير مدافع بين الأوروبيين، فقد ظهر فن المقالة لأول مرة في فرنسا سنة 1571م، ثم ظهر بعد ذلك ببضع عشرة سنة في كتابات فرانسيس بيكون، ثم أصبحت المقالة منذ ذلك الحين فناً إنكليزياً شائعاً بين قراء الإنكليزية مع سبق الفرنسيين إليه.

因此,当用户搜索رائد时,他们只会得到 (صيد الخاطر) كما عرفه العرب أقدم رائد للمقالة في الآداب العالمية 我尝试使用而不是整个页面文本

  1. SUBSTRING_INDEX
  2. 位置

但有时用户可能会写رأئد而不是رائد,MySQL匹配查询将正确获得结果,但位置和子字符串不会得到相同的结果。

问题是如何将位置和子字符串与匹配查询一起使用,以获取第一次出现的位置,并获取后面的 5 个单词和之前的 5 个单词

php mysql 子字符串 匹配

评论

0赞 Mahmoud M. Abdelmalek 7/4/2022
我尝试使用LOCATE,但它也需要完全匹配而不是部分匹配
0赞 Mahmoud M. Abdelmalek 7/4/2022
我正在考虑将数组分解为每个单词并制作 foreach 并通过检查匹配词 SELECT MATCH ('رأئد ') AGAINST ('رائد' 在布尔模式下)来获取单词的索引,例如 STRCMP 查询 选择 STRCMP('رأئد ', 'رائد') 作为 'Cmp_Value' 但无法运行该查询 它需要全文索引列

答:

0赞 Mahmoud M. Abdelmalek 7/6/2022 #1

在将文本分解为数组后,我在 php 上使用了 levenshtein 函数 并使用 foreach 循环获取最接近的匹配索引

评论

0赞 Community 7/6/2022
您的答案可以通过其他支持信息进行改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。