Как создать хороший поиск, который включает в себя соответствующие записи - PullRequest
2 голосов
/ 13 октября 2011

Я не знаю, как объяснить это в заголовке, у меня возникла проблема, когда я ищу, когда я ищу типичный запрос, такой как united kingdom, и записи включают записи, которые имеют united states, которыйМне не нужно включать его в результат запроса, даже при поиске new york Я получаю некоторые записи, возвращаемые из york (в Англии).

Другая, при поиске maidstone, запрос возвращаетзаписей вообще нет, но в базе данных она существует.

Мне нужно решить проблему с помощью этого запроса, он должен найти строки, соответствующие введенному запросу, и удалить их, которые соответствуют параметрам - когда я говорю «параметры», яозначает rec.column_name = etc....

При поиске united kingdom:

WHERE  ( MATCH (rec.street_name, rec.city, rec.state, rec.country) AGAINST ('united kingdom' IN BOOLEAN MODE) 
         OR ( rec.street_name = 'united kingdom' 
              OR rec.city = 'united kingdom' 
              OR rec.state = 'united kingdom'
              OR rec.country = 'united kingdom'
            )
       ) AND ( rec.visible_listing = 1 AND rec.marked_delete = 0 AND rec.is_archive = 0 ) 

При поиске maidstone:

WHERE  ( MATCH (rec.street_name, rec.city, rec.state, rec.country) AGAINST ('maidstone' IN BOOLEAN MODE) 
         OR ( rec.street_name = 'maidstone' 
              OR rec.city = 'maidstone' 
              OR rec.state = 'maidstone'
              OR rec.country = 'maidstone'
            )
       ) AND ( rec.visible_listing = 1 AND rec.marked_delete = 0 AND rec.is_archive = 0 )

Это общие записи в таблице:

+--------------------+---------------+----------------+----------------+-----------------+---------------+------------+
| street_name        | city          | state          | country        | visible_listing | marked_delete | is_archive |
+--------------------+---------------+----------------+----------------+-----------------+---------------+------------+
| Mill Hill          | Dover         | Kent           | United Kingdom |               1 |             0 |          0 |
| Penmaes            | Rhayader      | Powys          | United Kingdom |               1 |             0 |          0 |
| Essex St           | Jersey City   | Hudson         | United States  |               1 |             0 |          0 |
| Vesey St           | New York      | New York       | United States  |               1 |             0 |          0 |
| E Broadway         | Manhattan     | New York       | United States  |               1 |             0 |          0 |
| Cowdray Square     | Dover         | Kent           | United Kingdom |               1 |             0 |          1 |
| Falsgrave Crescent | York          | England        | United Kingdom |               1 |             0 |          0 |
| Tait Ave           | Sanger        | California     | United States  |               1 |             0 |          0 |
| Morton Ave         | Parsons       | Kansas         | United States  |               1 |             0 |          0 |
| N Washington St    | Clinton       | Missouri       | United States  |               1 |             0 |          0 |
| Lower Barngoose    | Carn Brea     | Cornwall       | United Kingdom |               1 |             0 |          0 |
| Moorwell Dr        | Shepherdswell | Kent           | United Kingdom |               1 |             0 |          0 |
| Elm Grove          | Maidstone     | Kent           | United Kingdom |               1 |             0 |          0 |
| Manse Rd           | Killin        | Stirling       | United Kingdom |               1 |             0 |          0 |
| Muirkirk Dr        | Glasgow       | Glasgow City   | United Kingdom |               1 |             0 |          0 |
| Alveston Ave       | Harrow        | Greater London | United Kingdom |               1 |             0 |          0 |
+--------------------+---------------+----------------+----------------+-----------------+---------------+------------+

Как создать хороший поисковый запрос, который возвращает не ложные данные?

1 Ответ

2 голосов
/ 13 октября 2011

Поместите строку поиска в двойные кавычки: '"united kingdom"' для точного соответствия.

Если вы хотите искать оба слова, но не обязательно смежные, вы можете использовать оператор +: '+united +kingdom'.

Обратите внимание, что при поиске будет учитываться регистр, если вы используете двоичное сопоставление для столбцов, в которых вы ведете поиск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...