Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jak użyć Fuzzy look up, aby znaleźć zdanie w SQL?

To nie jest proste pytanie. Najlepiej jest użyć jakiegoś typu wyszukiwania pełnotekstowego . Wyszukiwanie pełnotekstowe można skonfigurować tak, aby zawierało odrzucane słowa (słowa, które są pomijane w wyszukiwaniu - jak słowo the ) i może mieć również minimalny limit długości słowa (słowa o długości mniejszej niż pewna liczba znaków są również pomijane w wyszukiwaniu.

Jeśli jednak po prostu użyjesz

SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('ISBN number on site');

Wtedy MySQL zwróci nie tylko rekord z poszukiwaną wartością, ale także rekordy zawierające tylko niektóre słowa i w innej kolejności. Ten, który pokazałeś, będzie prawdopodobnie jednym z najwyżej sklasyfikowanych, ale nie ma gwarancji, że będzie to najwyżej sklasyfikowany.

Możesz użyć przeszukiwania pełnego tekstu logicznego i dodaj + do każdego wyszukiwanego słowa, aby zmusić MySQL do zwracania tylko tych rekordów, które zawierają wszystkie wyszukiwane słowa:

SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('+ISBN +number +on +site' IN BOOLEAN MODE);

Ale on powinien albo być odrzucanym słowem (znajduje się na domyślnych listach słów kluczowych) lub powinien być krótszy niż minimalna długość słowa, więc powinien zostać pominięty w wyszukiwanym wyrażeniu (nie otrzymasz żadnych wyników):

SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('+ISBN +number +site' IN BOOLEAN MODE);

Wiem, że wymaga to zmiany wyrażenia wyszukiwania, jednak zapewni to najlepsze wyniki przy użyciu wbudowanej funkcjonalności MySQL.

Alternatywą jest użycie innych wyszukiwarek pełnotekstowych, takich jak sfinks aby przeprowadzić wyszukiwanie za Ciebie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy można zaktualizować MySQL w MAMP do MySQL 5.7?

  2. Przechowywanie danych uwierzytelniających MS SQL Server w bazie danych MySQL

  3. Czy dobrze jest mieć kilka DAO?

  4. Zrozumienie naturalnego łączenia w SQL

  5. Wstawianie danych z CSV do bazy danych MySQL jest bardzo powolne