sgrottel / everythingsearchclient Goto Github PK
View Code? Open in Web Editor NEW๐ A .NET client library for Voidtools' Everything search engine, without the native Everything SDK dll.
License: Apache License 2.0
๐ A .NET client library for Voidtools' Everything search engine, without the native Everything SDK dll.
License: Apache License 2.0
The Query Results are received via IPC to a MessageOnly Window, and a Thread handling timeout behavior. Those are always created and destroyed for every Query. Especially when using paged-queries of a large number of files, those should be reused.
Closing the application must not be blocked or significantly slowed down.
Built-in filter macros, like video:
are currently not supported.
Using Everything's debug mode (https://www.voidtools.com/forum/viewtopic.php?t=1713) it can be seen, that the filter macros are replaced by a collection of file extensions.
Provide convenience string constants for those collections as part of the SearchClient interface.
On some, slow CI VMs this test fails.
Timeout?
D:\a\EverythingSearchClient\EverythingSearchClient\TestProject\bin\Release\net6.0-windows\TestProject.dll
Failed TestMethodWaitOrErrorWhenBusy [7 m 22 s]
Error Message:
Test method EverythingSearchClient.TestProject.TestBusyBehavior.TestMethodWaitOrErrorWhenBusy threw exception:
System.Exception: Everything service is busy
Stack Trace:
at EverythingSearchClient.SearchClient.Search(String query, SearchFlags flags, UInt32 maxResults, UInt32 offset, BehaviorWhenBusy whenBusy, UInt32 timeoutMs) in D:\a\EverythingSearchClient\EverythingSearchClient\EverythingSearchClient\SearchClient.cs:line 139
at EverythingSearchClient.SearchClient.Search(String query, BehaviorWhenBusy whenBusy, UInt32 timeoutMs) in D:\a\EverythingSearchClient\EverythingSearchClient\EverythingSearchClient\SearchClient.cs:line 247
at EverythingSearchClient.TestProject.TestBusyBehavior.TestMethodWaitOrErrorWhenBusy() in D:\a\EverythingSearchClient\EverythingSearchClient\TestProject\TestBusyBehavior.cs:line 64
This might require to upgrade IPC to V2
Previous Issues (#19) showed that sometimes answers are not received. Investigate and try to fix or mitigate.
I think in most cases, nuget and many package authors choose P / Invoke and dll because they don 't want to carry exe installer or use IPC. Can I implement / support a fully managed version of everything ?
Some features are only available via search api Query 2.
The fallback is nice, most of the time not needed, and it should be able to opt-out of it.
Rational: when querying paged results, it does make sense to request them in a sorted order.
The main core classes of the project work on the Windows-Platform only, because of specific P/Invoke, anyway. While the original idea was to keep the interfaces platform-independent, and to later add alternative implementations for other platforms, this is not going to happen anytime soon. So, let's make this a bit cleaner and make the whole package target Windows OS only, for now.
While the project already does this correctly, the nuget package does not.
search.Search("empty:");
Triggers in MessageReceiverWindow::ParseResultDataVersion2()
an exception at:
createDate = DateTime.FromFileTime(timecode);
because timecode
is -1
Tests on Github Actions currently disabled, because Everything service can no longer be used.
Find a light-weight configuration for Everything or a strong VM to run CT on.
In one of my application I do paged-queries like this:
result = everything.Search(query, QueryPageSize, offset, timeoutMs: QueryTimeoutMs);
QueryTimeoutMs
is set to 10000
.
Sometimes this call does not return ... ever.
I have seen such behavior in the context of debugging with break points.
The IPC answer message likely "got lost".
The timeout mechanism is meant to provide an exit path in this case.
This is likely what's happening here.
Not sure if it's worth it...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.