我正在使用jQuery autocompleter
进行搜索。
从我的下面的代码我的搜索只发生在区分大小写,我想进行不区分大小写的搜索。
例如。 $array={the king, The king, The man}
我的搜索关键字是“The”,那么目前我只获取{The king, The man}
之类的输出
我没有得到the king
,因为它是小写的。
我想要的是,如果我写“the”那么我应该得到所有三个结果。
请帮我解决我的问题
view.php
<script type="text/javascript">
$(document).ready(function() {
$(function() {
$( "#autocomplete" ).autocomplete({
source: function(request, response) {
$.ajax({ url: "<?php echo base_url().'search/suggestions'?>",
data: { term: $("#autocomplete").val()},
dataType: "json",
type: "POST",
success: function(data){
response(data);
}
});
},
minLength: 3,
select: function (a, b) {
$(this).val(b.item.value);
$(".searchform1").submit()
}
});
});
$('#autocomplete').focus();
});
function monkeyPatchAutocomplete() {
// Don't really need to save the old fn,
// but I could chain if I wanted to
var oldFn = $.ui.autocomplete.prototype._renderItem;
$.ui.autocomplete.prototype._renderItem = function( ul, item) {
var re = new RegExp("^" + this.term, "i") ;
var t = item.label.replace(re,"<span style='font-weight:bold;color:Black;'>" + this.term + "</span>");
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + t + "</a>" )
.appendTo( ul );
};
}
$(document).ready(function() {
monkeyPatchAutocomplete();
$("#input1").autocomplete({
// The source option can be an array of terms. In this case, if
// the typed characters appear in any position in a term, then the
// term is included in the autocomplete list.
// The source option can also be a function that performs the search,
// and calls a response function with the matched entries.
source: function(req, responseFn) {
addMessage("search on: '" + req.term + "'<br/>");
var re = $.ui.autocomplete.escapeRegex(req.term);
var matcher = new RegExp( "^" + re, "i" );
var a = $.grep( wordlist, function(item,index){
//addMessage(" sniffing: '" + item + "'<br/>");
return matcher.test(item);
});
addMessage("Result: " + a.length + " items<br/>");
responseFn( a );
},
select: function(value, data){
if (typeof data == "undefined") {
addMessage('You selected: ' + value + "<br/>");
}else {
addMessage('You selected: ' + data.item.value + "<br/>");
}
}
});
});
</script>
---------------
---------------
<form class="searchform1" action="<?php echo base_url().'search/searchresult/pgn/grid/'?>" method="POST">
<img src="<?php echo base_url()?>css/images/icons/searchicon.png" style="vertical-align:middle;"/>
<input id="autocomplete" value="<?php if(isset($srchvalue)){echo $srchvalue ;} ?>" class="deletable" type="text" name="keywords" style="height: 30px;width: 450px;font-size: 16px;border: 0;border-bottom:solid 4px #dfdfdf;border-top:solid 4px #dfdfdf;" maxlength="70" placeholder=" Search for Title, Author Name, Isbn , Publisher"/>
<input type="submit" value=" Search " class="searchbtn"/>
</form>
答案 0 :(得分:4)
避免使用很多类似的运算符。全文搜索是要走的路。完整txtsearch默认情况下不区分大小写。所以你没有问题。
以下是如何将mysql全文与codeigniter
集成答案 1 :(得分:0)
您是否故意在桌面上使用区分大小写的排序规则?更改为不区分大小写的排序规则可以解决您的问题。另一种解决方案是在较低(或较高)的情况下匹配您的字符串。像这样:
$ this-&gt; db-&gt; or_like('LOWER(auth_lastname)',strtolower($ keyword));
此外,如果您将InnoDB用作mysql中的存储引擎
,则无法进行全文搜索