2009-09-17 20 views
9

Pracuję z wyszukiwaniem pełnotekstowym MySQL, ale brakuje go w sytuacjach, w których ciąg znaków jest częścią słowa w polu. Jeśli moje pole to "New York Times" i szukam "czasu", nie otrzymuję wyników. Hackish sposobem na rozwiązanie tego problemu jest stworzenie dwóch zapytań, który wykonuje wyszukiwanie pełnotekstowe, a drugi, że robi:Wyszukiwanie pełnotekstowe za pomocą MySQL i LIKE

SELECT * FROM ___ WHERE 'string' LIKE %searchterm% 

Czy jest jakiś sposób, że mogę skonfigurować wyszukiwanie pełnego tekstu, aby rozwiązać ten problem więc nie muszę uruchamiać dodatkowego zapytania?

Odpowiedz

2

Ja w zasadzie zrezygnowała z pełnego wyszukiwania MySQL tekstowym na rzecz Sphinx - dedykowanym pełnotekstowego wyszukiwarce który implementuje protokół sieciowy MySQL, dzięki czemu można „wstawić” go między klientami a serwerem MySQL, tracąc nic i zyskuje bogate, poważne możliwości pełnotekstowe. Może nie nadaje się do twoich potrzeb (których nie wyrażasz w pełni), ale myślę, że to przynajmniej praca sprawdzająca!

+0

Fajne dzięki. Tylko dla wyjaśnienia mojego pytania. Mam pole, które jest New York Giants. Jeśli dodaję to do indeksu pełnotekstowego, a następnie wyszukam "gigant", nic nie wyjdzie. Jak mogę użyć wyszukiwania pełnotekstowego do zwrócenia wyników w takich przypadkach? Sprawdzę Sfinksa. Dzięki za heads up –

+0

@Russ, szukasz ** ** wtyczek ** (dla mysql 5.1, 5.0 ich nie obsługuje), np. http://www.mnogosearch.org/doc/msearch-udmstemmer.html. –

+0

Dziękuję Alex, doceniam pomoc. Niestety, moje ręce są związane i nie mogę uaktualnić do mysql 5.1. Ale jestem trochę zdezorientowany, i podkreślam, że w wersji 5.0 nie mogę używać parserów klientów, ale czy oznacza to, że nie ma natywnej metody mysql, która ma miejsce w wersji 5.0? –

6

Możesz używać symboli wieloznacznych podczas wyszukiwania pełnotekstowego. Więcej informacji here

SELECT * FROM _____ WHERE MATCH (title) AGAINST ('time*' IN BOOLEAN MODE); 
+0

hmmm miło. Nie myślałem o tym. Jedynym problemem jest to, że jest to słaby substytut fortuny, ponieważ nie pasuje do "czasu" i takich słów. Zdecydowałem się na wyszukiwanie pełnotekstowe i wyszukiwanie zgodne z LIKE% ...%. Jest to nieco uciążliwe i zapewnia dodatkowe zapytania, ale generuje dość solidne wyniki. –

+0

Nie pomaga również, gdy wyszukiwanie musi przejść w drugą stronę. Na przykład dane zawierają słowo "ipad", ale użytkownik wyszukuje "ipadów". Symbol wieloznaczny nie pomoże w tym przypadku. – Vincent

+0

@Arnold 'LIKE% ...%' zabije twoją wydajność, ponieważ SQL nie użyje indeksów. Jeśli wybierzesz takie podejście, prawdopodobnie nie będziesz potrzebował wyszukiwania pełnotekstowego. – PeerBr

Powiązane problemy