如何在进行mysql查询之前识别停止语
How to identify stopwords before making mysql query
我正在尝试为一个网络应用程序设置文本搜索。我的mysql查询如下:
SELECT * FROM t1 WHERE MATCH (c1,c2,c3) AGAINST (:keyStr IN BOOLEAN MODE)
我希望:keyStr中的所有单词都匹配,所以keyStr看起来像:
:keyStr='+word[0]* +word[1]* +word[2]* + ... +word[n]*'
如果任何单词[x]是停止词或小于最小单词长度,则查询返回null。我认为最好的解决方案是从停止字中删除"+",或者从keyStr中完全删除停止字。
有什么好方法可以做到这一点吗?在进行查询之前,我需要检查stopwords_list中是否有单词[x]吗?
用javascript实现这一点的一种简单方法是:
var apart = "Some +example search that I made up".toLowerCase().replace(/['+'-'?]*/g, '').split(' '),
stop_words = ['the', 'that', 'a', 'example'],
min_word_length = 1;
// filter the array to remove stop words
apart.filter( function( item ) {
if ( item.length < min_word_length ) return false;
return stop_words.indexOf( item ) === -1;
});
编辑:虽然在伪代码的意义上,上面的代码可以工作,这里是一个PHP解决方案
$query = "This is my example search query";
$search = explode(' ', $query);
$stop_words = array('is', 'a', 'the');
$terms = array_filter($search, function($item){
return !in_array($item, $stop_words);
});
$formatted = array_map(function($term){
return '+'.mysql_escape_string($term).'*';
}, $terms);
// :keyStr = implode(' ', $formatted);
相关文章:
- 如何识别我的网站中的慢速设备
- Google/html5语音识别JavaScript SDK Chrome网络工具包SpeechRecognition
- AngularJS指令只识别双向绑定类型
- php脚本中无法识别ajax传递的值
- 识别没有ID或特定属性的对象
- JavaScript无法识别图像
- 识别由不同数量的项组成的json对象
- 无法识别从php创建的Js函数
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- 函数无法识别初始化的变量
- 具有带大括号的字符串时无法识别的表达式
- 在Fiddler JavaScript中识别POST请求
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]
- 在csv文件名中使用西班牙语字符
- javascript正则表达式来识别所有特殊字符
- 确定(识别)dc.js图表类型
- Ionic应用程序无法识别android手机中的语音
- node.js可以识别字符模式,但不能识别数字模式
- 如何识别波斯语字符?
- 如何在进行mysql查询之前识别停止语