问题描述
具体是这样:查询内容:结果:“图壁厂1号”只要含有“图壁厂“三个字的都出来了“图壁厂11号”查询正确意思就是说只要是那个1号的“1”是小于10的数字,查询都不正确,只要是大于10的查询都正确我想问问sql2000的全文检索在获取关键字的时候怎么取的?我的这个为什么不正确?
解决方案
解决方案二:
大于小于没听明白那个似乎是图示列表的说明也没看明白解释清点吧
解决方案三:
就是说查询“图壁厂1号”或者“图壁厂2号”或者“图壁厂3号”等等,(1,2,3,4,5,6,7,8,9)号这些查询的时候不正确但是如果是:“图壁厂10号”,或者“图壁厂11号”等等(10以上的)查询都正确不知道说清楚了没?
解决方案四:
就是说查询“图壁厂1号”或者“图壁厂2号”或者“图壁厂3号”等等,(1,2,3,4,5,6,7,8,9)号这些查询的时候不正确但是如果是:“图壁厂10号”,或者“图壁厂11号”等等(10以上的)查询都正确不知道说清楚了没?
解决方案五:
是直接SQL中的%查询么?是不是检索的算法有问题
解决方案六:
嗯,是的就是SQL2000中的全文检索那个功能,全文目录
解决方案七:
like‘图壁厂[1-9][0-9]号’
解决方案八:
like‘图壁厂[1-9][^号]’
解决方案九:
like‘图壁厂[1-9][0-9]%号’
解决方案十:
“图壁厂”这个只是个事例,我是说在sql全文检索的时候,sql他忽略了(1,2,3,4..9)这写单个数字,搜索关键字为“图壁厂1号”的搜索结果和关键字为“图壁厂”搜索的内容是一样的。但是1号要是变成两位数字(10,11....)就查询正确
解决方案十一:
你查询的时候是不是输入数字然后模糊查询?数字输入为N查询like‘图壁厂N%号’如果N为单位数1,2...9当然由于匹配会把1,2...9开头的数字都查询出来如果N为双位的由于查询匹配更精确查询结果正确
解决方案十二:
好象说得不是很清楚查询like‘图壁厂1%号’时只要字段在%两边符合就在结果里面图壁厂1号和图壁厂11号都满足查询要求而查询like‘图壁厂11%号’时只有图壁厂11号满足条件,图壁厂1号不满足
解决方案十三:
可能是SQLServer本身中文分词的问题
解决方案十四:
不是的,虽然是模糊查询的,但是这个“图壁厂”三个字我可以换成其他的字,如“加加减减1号”,我说的这个问题,是说sql2000在全文检索的时候在取关键字的时候会不会不准确,把“图壁厂1号”省略成“图壁厂”
解决方案十五:
把你sql语句发一下估计是你写的问题
解决方案:
单词断字符的语言用neutral看看
解决方案:
发sql语句吧sql2000不会把“图壁厂1号”省略成“图壁厂”
解决方案:
下面是我写的共通参考下publicclassMCHBaseClass{privateDataSetds=newDataSet();privatestringmPath="";publicDataSetgetDS(){returnds;}///<summary>///加载获取的MXL获取XML路径///</summary>///<paramname="path"></param>publicvoidLoadSetting(stringpath){this.mPath=path;this.ds=newDataSet();try{ds.ReadXml(@mPath);}catch(Exceptionex){System.Console.WriteLine(ex.Message);throw;}}publicDataTableGetting(stringfNode){DataTabledt=newDataTable();try{dt=ds.Tables[fNode];returndt;}catch(Exceptionex){System.Console.WriteLine(ex.Message);throw;}}///<summary>///获取fNode父节点下第intKey行strSection的属性值///</summary>///<paramname="fNode">父节电名称</param>///<paramname="intKey">行数</param>///<paramname="strSection">属性名称</param>///<returns></returns>publicstringGetting(stringfNode,intintKey,stringstrSection){stringstrValue="";try{strValue=Convert.ToString(ds.Tables[fNode].Rows[intKey][strSection]);returnstrValue;}catch(Exceptionex){System.Console.WriteLine(ex.Message);throw;}}///<summary>///把ds写到路径mPath下,保存成XML///</summary>///<paramname="ds1"></param>///<paramname="mPath1"></param>publicvoidSaveSettings(DataSetds1,stringmPath1){try{ds1.WriteXml(@mPath1);}catch(Exceptionex){System.Console.WriteLine(ex.Message);throw;}}///<summary>///更改父节点为fNode第intKey行strSection属性值为strDefaultValue///</summary>///<paramname="fNode">父节点名称</param>///<paramname="intKey">行数</param>///<paramname="strSection">属性名称</param>///<paramname="strDefaultValue">更改的值</param>publicvoidSetSetting(stringfNode,intintKey,stringstrSection,stringstrDefaultValue){try{ds.Tables[fNode].Rows[intKey][strSection]=strDefaultValue;ds.AcceptChanges();this.SaveSettings(ds,mPath);}catch(Exceptionex){System.Console.WriteLine(ex.Message);throw;}}///<summary>///在父节点为fNodeintKey行添加属性名称strSection值strDefaultValue///</summary>///<paramname="fNode">父节点名称</param>///<paramname="intKey">行数</param>///<paramname="strSection">添加的属性名称</param>///<paramname="strDefaultValue">属性值</param>publicvoidAddSettings(stringfNode,intintKey,stringstrSection,stringstrDefaultValue){try{ds.Tables[fNode].Columns.Add(strSection);ds.Tables[fNode].Rows[intKey][strSection]=strDefaultValue;ds.AcceptChanges();this.SaveSettings(ds,mPath);}catch(Exceptionex){System.Console.WriteLine(ex.Message);throw;}}///<summary>///删除父节点为fNode下的属性值strSection///</summary>///<paramname="fNode"></param>///<paramname="strSection"></param>publicvoidDeleteSettings(stringfNode,stringstrSection){try{ds.Tables[fNode].Columns.Remove(strSection);ds.AcceptChanges();this.SaveSettings(ds,mPath);}catch(Exceptionex){System.Console.WriteLine(ex.Message);throw;}}}