Php Mysql文本搜索问题

Php Mysql文本搜索问题,php,mysql,search,Php,Mysql,Search,我试图进行精确搜索,但在使用“Sonal”搜索时遇到问题,我从记录中得到的结果是“Sonal”和“personal”。当我删除var name之前的%时,得到的结果是哪个记录从“Sonal”开始,并且没有发现文本的任何地方有“Sonal” 以下是查询: AND ( lower(document_text) LIKE '%".$search_name2."%' OR lower(customdoc_name) LIKE '%".$search_name2."%'

我试图进行精确搜索,但在使用“Sonal”搜索时遇到问题,我从记录中得到的结果是“Sonal”和“personal”。当我删除var name之前的%时,得到的结果是哪个记录从“Sonal”开始,并且没有发现文本的任何地方有“Sonal”

以下是查询:

AND (
       lower(document_text) LIKE '%".$search_name2."%' 
    OR lower(customdoc_name) LIKE '%".$search_name2."%' 
    OR lower(doc_tags) LIKE '%".$search_name2."%'
)
记录1-个人证书
记录2-个人证书

我只想第二记录返回搜索时与“Sonal”

我没有使用全文字段。

“%”运算符仅以这种方式操作

它是一个通配符,表示任何字符串。 所以

  • “%HELL%”将与“OT*HELL*O”、“HELL”、“HELLO”、“THE_HELL等匹配
  • “HELL%”将只匹配以“HELL”、“HELLO”、“HELLOWW”等地狱开头的单词,但不匹配“Otherlo”
  • “%HELL”将匹配以地狱结尾的单词,例如“THE_HELL”,但不匹配“HELLO”
  • 这可能会有所帮助

    在字符串后面或前面、后面或前面添加空格。这样,在字符串开头、中间或结尾的情况下,您将得到“sonal”的结果

    AND (
           lower(document_text) LIKE '%".$search_name2." %' 
        OR lower(customdoc_name) LIKE '% ".$search_name2." %' 
        OR lower(doc_tags) LIKE ' %".$search_name2."%'
    )
    

    使用
    REGEXP
    尝试以下操作

    AND (
           lower(document_text) REGEXP '[[:<:]]".$search_name2."[[:>:]]' 
        OR lower(customdoc_name) REGEXP '[[:<:]]".$search_name2."[[:>:]]' 
        OR lower(doc_tags) REGEXP '[[:<:]]".$search_name2."[[:>:]]' 
    )
    
    和(
    下部(文档文本)REGEXP'[[::]]
    或更低(customdoc_name)REGEXP'[[::]]
    或更低(doc_标签)REGEXP'[[::]]
    )
    

    性能不好。。但是你会得到准确的结果。

    为什么不使用全文搜索?它应该是一条评论,而不是一条评论answer@diEcho为什么它更适合作为评论而不是回答?@DhruvPathak:它更像是旁注。实际上并没有回答这个问题。不过这很有帮助。恕我冒犯。:)很好,我没有注意到这个空间:)