Несмотря на то, что все вышеупомянутые ссылки заслуживают внимания, и в прошлом мне это очень понравилось, поскольку лингвист «подвергался» различным поисковым системам Lucene за последние 15 лет, я должен сказать, что разработка эластичного поиска очень быстро в Python. При этом некоторые из кодов чувствовали себя неинтуитивными для меня. Итак, я обратился к одному компоненту стека ELK Kibana с точки зрения с открытым исходным кодом и обнаружил, что в Kibana я могу с легкостью создать несколько загадочный код elasticsearch. Кроме того, я мог бы запросить запросы Chrome Sense в Kibana. Если вы используете Kibana для оценки es, это еще больше ускорит вашу оценку. То, что заняло несколько часов, чтобы работать на других платформах, работало в JSON in Sense поверх elasticsearch (интерфейс RESTful) за несколько минут в худшем случае (самые большие наборы данных); в секундах в лучшем случае. Документация для поиска elasticsearch, а также более 700 страниц, не отвечала на мои вопросы, которые обычно решались в документации SOLR или другой Lucene, что, очевидно, занимало больше времени для анализа. Кроме того, вы можете захотеть взглянуть на Агрегаты в эластичном поиске, которые вывели Faceting на новый уровень.
Большее изображение: если вы занимаетесь наукой о данных, текстовой аналитикой или вычислительной лингвистикой, у elasticsearch есть некоторые алгоритмы ранжирования, которые, похоже, хорошо внедряются в области поиска информации. Если вы используете какие-либо TF / IDF-алгоритмы, частоту текста / обратную частоту документов, elasticsearch расширяет этот алгоритм 1960-х до нового уровня, даже используя BM25, Best Match 25 и другие алгоритмы ранжирования ранжирования. Итак, если вы забиваете или ранжируете слова, фразы или предложения, elasticsearch делает этот выигрыш «на лету», без больших накладных расходов на другие подходы к анализу данных, которые занимают часы - еще одна экономия времени elasticsearch. С помощью es, сочетающего в себе сильные стороны bucketing от агрегатов с оценкой и ранжированием релевантности данных JSON в реальном времени, вы можете найти выигрышную комбинацию, в зависимости от вашего гибкого (истории) или архитектурного (использования) подхода.
Примечание. Наблюдалось аналогичное обсуждение вышеперечисленных агрегатов, но не по скоплениям и подсчету релевантности - извинения за любое перекрытие. Раскрытие информации: я не работаю на эластичность и не буду в состоянии в ближайшем будущем извлечь выгоду из их превосходной работы из-за другого архитектурного пути, если я не сделаю какую-то благотворительную работу с elasticsearch, что не будет плохой идеей
Есть встроенные события для обработки MouseEnter
// Wire up the MouseEnter event when creating your buttons
button.MouseEnter += button_MouseEnter;
// Method that gets called
private void button_MouseEnter(object sender, EventArgs e)
{
var button = sender as Button;
ShipImage1.Location = button.Location;
}
Если я правильно понимаю, и если вы используете Winforms, вам просто нужно подписать логику положения изображения на событие MouseMove
каждой из ваших кнопок. Попробуйте следующее:
Определите этот метод в своем классе:
private void button_MouseMove(object sender, MouseEventArgs e)
{
ShipImage1.Location = e.Location;
}
Затем в логике, отвечающей за создание экземпляра каждой кнопки, хранящейся в вашем массиве b
, подпишите этот метод для события MouseMove
:
...
for (int x = 0; x < 15; x++)
{
for (int y = 0; y < 15; y++)
{
var myButton = new Button();
myButton.MouseMove += button_MouseMove;
// More awesome stuff around myButton...
b[x, y] = myButton;
}
}
...
Также при необходимости вы можете получить текущие координаты экранной мыши из статического свойства Form.MousePosition
.
Удачи!
РЕДАКТИРОВАТЬ Или использовать вместо этого событие MouseEnter
, как указано @Jerry в другом ответе, которое должно работать лучше.