Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 476 Pomógł: 96 Dołączył: 10.04.2008 Skąd: Koszalin Ostrzeżenie: (0%)
|
Witam
Dodałem na kolumnę Fulltext Index w celu optymalizacji, chciałbym teraz wyszukiwać w tabeli po tym indeksie. Index:
W celu wyszukania z wykorzystaniem stworzonego indeksu zamieniłem zwykłe zapytanie Select ... From ... Where ... na:
Problem w tym, że wynikiem owego zapytania musi być jeden rekord, w którym znajduje się identyczna fraza. W bazie frazy zawierają znak minus (-), który jest w tym przypadku znakiem specjalnym. Pytania: Jak zwrócić jeden dokładnie pasujący rekord? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%)
|
Nie jestem pewny w 100%, ale wydaje mi się, że się nie da. Jedyne co możesz zrobić gdy szukasz wyrażenia ze znakami specjalnymi, to ograniczyć znacząco ilość wierszy przy użyciu wyszukiwania pełnotekstowego, a następnie oczyścić dokładnie wynik przy użyciu LIKE:
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 476 Pomógł: 96 Dołączył: 10.04.2008 Skąd: Koszalin Ostrzeżenie: (0%)
|
|
|
|
|
Post
#4
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Strzelam, że wystarczy zaescape'ować znak minusa:
Kod asdasdasd\-sdfsdf
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%)
|
@pitu120 Jeśli w polu search_txt nie masz nic więcej oprócz "rihanna-only" to nie używaj indeksu pełnotekstowego. Tracisz tylko wtedy na wydajności i pojawiają się takie właśnie problemy ze znakami specjalnymi. Użyj zwykłego indeksu.
@erix To była pierwsza rzecz którą sprawdziłem - nie działa. W manualu nie ma żadnej wzmianki o znakach ucieczki. Dodatkowo znalazłem to: Cytat Generally, anything that's alphabetic or numeric (including accented characters) is part of a word, anything that's not alphabetic or numeric (even "-") is not part of a word and is therefore used as a separator. http://dev.mysql.com/tech-resources/articl...t-revealed.html Ma to prawdopodobnie związek z tym jak tworzony jest indeks słów. Bez sensu byłoby oprócz pojedynczych słów dodawać do indeksu też pary słów, trójki, czwórki, itd. na wypadek, gdyby ktoś chciał wyszukać dokładną frazę "ala ma kota". No i rykoszetem oberwały też pary słów oddzielone innym znakiem niż spacja czy enter. Ten post edytował Noidea 14.12.2010, 21:45:06 |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 476 Pomógł: 96 Dołączył: 10.04.2008 Skąd: Koszalin Ostrzeżenie: (0%)
|
@Noidea w search_txt przechowywane są wyszukiwane nazwy piosenek, podany wyżej to tylko przykład.
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%)
|
Nie o to mi chodzi. Pytałem, czy w polu search_txt może znaleźć się: "Moja ulubiona piosenka to rihanna-only, jest super", czy będzie tam tylko "rihanna-only".
Ogólnie, to jeśli takie zapytanie ci działa:
i zastanawiasz się tylko, czy użycie indeksu pełnotekstowego będzie szybsze, to odpowiedzią jest: nie będzie. Możesz przyjąć, że FULLTEXT przydaje się, jeśli chcesz zoptymalizować takie zapytanie
w twoim przypadku należy użyć zwykłego indeksu. |
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 20:13 |